Ce code contient 3 parties principales. La première sert à créer un sous-fichier contenant les communes ayant été soumises à la loi SRU au moins une fois. Dans la suite, il compare les données du fichier RPLS et des bilans SRU (annuels et triennaux) sur le nombre de logements sociaux construits. Et finalement, il regarde les entrées et les sorties de chaque commune soumise à la loi SRU.
Le code suivant sert à créer un sous-fichier contenant les données des communes ayant été soumises à la loi SRU au moins pour une année et/ou un bilan triennal. Ce fichier est créé à partir d’un fichier contenant les données de toutes les communes du territoire SRU.
library(sqldf)
## Le chargement a nécessité le package : gsubfn
## Le chargement a nécessité le package : proto
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## Le chargement a nécessité le package : RSQLite
library(tidyr)
library(dplyr)
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
# Chargement des données
dat = read.csv(file = "../donnees_resultat/LLS_communes_quantitatif.csv",
na = c('', 'NA', 'NaN', NaN, 'nan', 'NR'))
# Transformation des données en DataFrame
df = as.data.frame(dat)
Pour chaque bilan triennal, on crée un sous-fichier contenant les données des communes soumises à la loi SRU dans le bilan.
# Communes soumises pour chaque bilan triennal
co_so_02_04 = sqldf("SELECT * FROM df WHERE situation_02_04 LIKE 'Soumise%'")
co_so_05_07 = sqldf("SELECT * FROM df WHERE situation_05_07 LIKE 'Soumise%'")
co_so_08_10 = sqldf("SELECT * FROM df WHERE situation_08_10 LIKE 'Soumise%'")
co_so_11_13 = sqldf("SELECT * FROM df WHERE situation_11_13 LIKE 'Soumise%'")
co_so_14_16 = sqldf("SELECT * FROM df WHERE situation_14_16 LIKE 'Soumise%'")
co_so_17_19 = sqldf("SELECT * FROM df WHERE situation_17_19 LIKE 'Soumise%'")
# '*' signifie toutes les colonnes
# '%' sert à remplacer un caractère ou une chaine de caractères
# LIKE 'Soumise%' = commence par 'Soumise'
Pour chaque bilan annuel, on crée un sous-fichier contenant les données des communes soumises à la loi SRU dans le bilan.
# Communes soumises pour chaque bilan annuel
co_so_04 = sqldf("SELECT * FROM df WHERE situation_04 LIKE 'Soumise%'")
co_so_05 = sqldf("SELECT * FROM df WHERE situation_05 LIKE 'Soumise%'")
co_so_06 = sqldf("SELECT * FROM df WHERE situation_06 LIKE 'Soumise%'")
co_so_07 = sqldf("SELECT * FROM df WHERE situation_07 LIKE 'Soumise%'")
co_so_08 = sqldf("SELECT * FROM df WHERE situation_08 LIKE 'Soumise%'")
co_so_09 = sqldf("SELECT * FROM df WHERE situation_09 LIKE 'Soumise%'")
co_so_10 = sqldf("SELECT * FROM df WHERE situation_10 LIKE 'Soumise%'")
co_so_11 = sqldf("SELECT * FROM df WHERE situation_11 LIKE 'Soumise%'")
co_so_12 = sqldf("SELECT * FROM df WHERE situation_12 LIKE 'Soumise%'")
co_so_13 = sqldf("SELECT * FROM df WHERE situation_13 LIKE 'Soumise%'")
co_so_14 = sqldf("SELECT * FROM df WHERE situation_14 LIKE 'Soumise%'")
co_so_15 = sqldf("SELECT * FROM df WHERE situation_15 LIKE 'Soumise%'")
co_so_16 = sqldf("SELECT * FROM df WHERE situation_16 LIKE 'Soumise%'")
co_so_17 = sqldf("SELECT * FROM df WHERE situation_17 LIKE 'Soumise%'")
co_so_18 = sqldf("SELECT * FROM df WHERE situation_18 LIKE 'Soumise%'")
co_so_19 = sqldf("SELECT * FROM df WHERE situation_19 LIKE 'Soumise%'")
co_so_20 = sqldf("SELECT * FROM df WHERE situation_20 LIKE 'Soumise%'")
co_so_21 = sqldf("SELECT * FROM df WHERE situation_21 LIKE 'Soumise%'")
Création du sous-fichier contenant les données des communes soumises à la loi SRU dans les bilans triennaux.
# Assemblage pour tous les triennaux
co_so_tri = sqldf("SELECT * FROM co_so_02_04
UNION
SELECT * FROM co_so_05_07
UNION
SELECT * FROM co_so_08_10
UNION
SELECT * FROM co_so_11_13
UNION
SELECT * FROM co_so_14_16
UNION
SELECT * FROM co_so_17_19")
# la commande 'UNION' permet d'assembler les dataframes sans répétition des lignes
La taille de ce sous-fichier est de 1313 communes.
Création du sous-fichier contenant les données des commmunes soumises à la loi SRU dans les bilans annuels.
# Assemblage pour tous les ans
co_so_ann = sqldf("SELECT * FROM co_so_04
UNION
SELECT * FROM co_so_05
UNION
SELECT * FROM co_so_06
UNION
SELECT * FROM co_so_07
UNION
SELECT * FROM co_so_08
UNION
SELECT * FROM co_so_09
UNION
SELECT * FROM co_so_10
UNION
SELECT * FROM co_so_11
UNION
SELECT * FROM co_so_12
UNION
SELECT * FROM co_so_13
UNION
SELECT * FROM co_so_14
UNION
SELECT * FROM co_so_15
UNION
SELECT * FROM co_so_16
UNION
SELECT * FROM co_so_17
UNION
SELECT * FROM co_so_18
UNION
SELECT * FROM co_so_19
UNION
SELECT * FROM co_so_20
UNION
SELECT * FROM co_so_21")
La taille de ce sous-fichier est de 1508 communes. Il y a une grande différence du nombre de communes entre les bilans triennaux et les bilans annuels.
On peut regarder quelles communes sont dans les bilans triennaux mais non soumises à la loi SRU dans les bilans annuels.
# Liste des communes apparaissant dans au moins un bilan triennal mais n'étant
# pas soumises à la loi SRU dans les bilans annuels
a = sqldf("SELECT code_commune FROM co_so_tri
EXCEPT
SELECT code_commune FROM co_so_ann")
Il s’agit des 11 communes suivantes : 12176, 20004, 26035, 31149, 31254, 44410, 54339, 57368, 57537, 58088, 73030.
À l’inverse, on peut regarder quelles sont les communes soumises à la loi SRU dans les bilans annuels mais qui n’apparaissent pas dans les bilans triennaux.
# Liste des communes étant soumises à la loi SRU dans les bilans annuels mais
# n'apparaissant pas dans les bilans triennaux
a = sqldf("SELECT code_commune FROM co_so_ann
EXCEPT
SELECT code_commune FROM co_so_tri")
Il y a 206 communes dans cette liste, par exemples 01160, 14181, 22093, 35125, 49218, 50601, 69152, 73213, 89346, 97612.
Comme les bilans annuels couvrent les années de 2004 à 2021 et que les bilans triennaux couvrent les années de 2002 à 2019, on peut créer un autre sous-fichier contenant les communes soumises à laa loi SRU dans les bilans annuels de 2004 à 2019.
# Assemblage pour les années jusqu'en 2019
co_so_ann_19 = sqldf("SELECT * FROM co_so_04
UNION
SELECT * FROM co_so_05
UNION
SELECT * FROM co_so_06
UNION
SELECT * FROM co_so_07
UNION
SELECT * FROM co_so_08
UNION
SELECT * FROM co_so_09
UNION
SELECT * FROM co_so_10
UNION
SELECT * FROM co_so_11
UNION
SELECT * FROM co_so_12
UNION
SELECT * FROM co_so_13
UNION
SELECT * FROM co_so_14
UNION
SELECT * FROM co_so_15
UNION
SELECT * FROM co_so_16
UNION
SELECT * FROM co_so_17
UNION
SELECT * FROM co_so_18
UNION
SELECT * FROM co_so_19")
On peut vérifier que la liste des communes soumises à la loi SRU dans les bilans annuels jusqu’en 2019 mais qui n’apparaissent pas dans les bilans triennaux est plus petite que la précédente.
# Liste des communes étant soumises à la loi SRU dans les bilans annuels
# jusqu'en 2019 mais n'apparaissant pas dans les bilans triennaux
a = sqldf("SELECT code_commune FROM co_so_ann_19
EXCEPT
SELECT code_commune FROM co_so_tri")
Il y a 162 communes dans cette liste.
On réunit maintenant les deux sous-fichiers contenant les informations des communes soumises pour tous les bilans de la loi SRU.
# Assemblage de toutes les communes soumises à la loi SRU
co_so = sqldf("SELECT * FROM co_so_ann
UNION
SELECT * FROM co_so_tri")
# Exportation des données au format csv
write.csv(x = co_so, file = '../donnees_resultat/communes_soumises_SRU.csv',
row.names = FALSE)
saveRDS(co_so, "../donnees_resultat/communes_soumises_SRU.rds")
L’information sur le nombre de nouveaux logements locatifs sociaux d’une commune est contenue sous deux formes dans notre fichier. La première est une information triennal portant sur le nombre de constructions de logements locatifs sociaux en trois ans (entre 2002 et 2004, entre 2005 et 2007, entre 2008 et 2010, entre 2011 et 2013, entre 2014 et 2016, entre 2017 et 2019). La deuxième est le nombre de logements locatifs sociaux de chaque commune pour chaque année. Nous comparer ces deux informations.
On compte le nombre total de constructions de logements locatifs sociaux à partir de 2005 car les bilans annuels commençant en 2004, nous n’avons pas d’informations sur le nombre de logements locatifs sociaux avant 2004.
# Nombre de constructions de LLS totales pour chaque commune
co_so$constructions_totales = co_so$construction_05_07 +
co_so$construction_08_10 + co_so$construction_11_13 +
co_so$construction_14_16 + co_so$construction_17_19
# Variation pour chaque commune du nombre de LLS
co_so$variation_LLS_04_18 = co_so$LLS_18 - co_so$LLS_04
co_so$variation_LLS_04_19 = co_so$LLS_19 - co_so$LLS_04
co_so$variation_LLS_04_20 = co_so$LLS_20 - co_so$LLS_04
co_so$variation_LLS_04_21 = co_so$LLS_21 - co_so$LLS_04
# Variation pour chaque commune du nombre de LLS
co_so$variation_LLS_05_18 = co_so$LLS_18 - co_so$LLS_05
co_so$variation_LLS_05_19 = co_so$LLS_19 - co_so$LLS_05
co_so$variation_LLS_05_20 = co_so$LLS_20 - co_so$LLS_05
co_so$variation_LLS_05_21 = co_so$LLS_21 - co_so$LLS_05
co_so$variation_LLS_06_21 = co_so$LLS_21 - co_so$LLS_06
# Différence entre les 2 pour 2004 et 2018
a = co_so$constructions_totales - co_so$variation_LLS_04_18
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -4534.0 49.0 86.6 121.0 164.0 200.5 245.0 311.1 418.0 658.3
## 100%
## 13676.0
# Différence entre les 2 pour 2004 et 2019
a = co_so$constructions_totales - co_so$variation_LLS_04_19
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -4858.0 38.0 70.0 105.0 148.4 183.5 218.0 279.1 366.8 593.8
## 100%
## 11617.0
# Différence entre les 2 pour 2004 et 2020
a = co_so$constructions_totales - co_so$variation_LLS_04_20
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -5226.0 30.0 55.6 89.0 120.0 158.0 191.6 244.1 325.8 509.0
## 100%
## 10417.0
# Différence entre les 2 pour 2004 et 2021
a = co_so$constructions_totales - co_so$variation_LLS_04_21
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -8446.0 15.0 44.0 66.0 93.0 130.0 168.8 210.1 282.4 429.7
## 100%
## 10438.0
# Différence entre les 2 pour 2005 et 2018
a = co_so$constructions_totales - co_so$variation_LLS_05_18
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -4486.0 54.0 91.0 123.9 169.8 206.0 256.0 322.0 424.0 670.1
## 100%
## 14212.0
# Différence entre les 2 pour 2005 et 2019
a = co_so$constructions_totales - co_so$variation_LLS_05_19
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -4810.0 44.3 76.0 110.0 153.0 185.0 225.8 289.1 378.4 609.5
## 100%
## 12153.0
# Différence entre les 2 pour 2005 et 2020
a = co_so$constructions_totales - co_so$variation_LLS_05_20
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -5178.0 36.0 61.0 92.0 123.0 163.0 201.0 253.3 332.0 524.7
## 100%
## 10953.0
# Différence entre les 2 pour 2005 et 2021
co_so$a = co_so$constructions_totales - co_so$variation_LLS_05_21
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -5178.0 36.0 61.0 92.0 123.0 163.0 201.0 253.3 332.0 524.7
## 100%
## 10953.0
summary(a)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -5178.00 74.25 163.00 287.10 288.75 10953.00 942
# Différence entre les 2 pour 2006 et 2021
co_so$a = co_so$constructions_totales - co_so$variation_LLS_06_21
quantile(a, na.rm = TRUE, probs = seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -5178.0 36.0 61.0 92.0 123.0 163.0 201.0 253.3 332.0 524.7
## 100%
## 10953.0
summary(a)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -5178.00 74.25 163.00 287.10 288.75 10953.00 942
On regarde les données des communes qui ont les plus grandes différences entre le nombre de constructions de logements locatifs sociaux annoncées dans les bilans triennaux et la variation du nombre de logements locatifs sociaux entre le premier janvier 2005 (bilan annuel 2006) et le premier janvier 2020 (bilan annuel 2021).
La commune 74010 a une variation de logements sociaux de 5356 de plus
que de constructions. Il s’agit de la commune d’Annecy qui est issue de
la fusion des communes 74010, 74011, 74093, 74182, 74217 et 74268 à
partir du 1er janvier 2017.
La commune 74011 avait 1162 logements sociaux en 2005 et 1867 en 2017.
Elle a déclaré 796 constructions.
La commune 74093 avait 1132 logements sociaux en 2005 et 1483 en 2017.
Elle a déclaré 570 constructions dans cette période.
La commune 74182 avait 811 logements sociaux en 2005 et 908 en
2017.
La commune 74217 avait 0 logement sociaux en 2005 et 137 en 2017.
La commune 74268 avait 1500 logements sociaux en 2005 et 1770 en
2017.
La commune 75056 a une variation de logements sociaux de 4756 de plus
que de constructions. Il s’agit de la commune de Paris.
85600 constructions déclarées dans les bilans triennaux.
# fichier du nombre de constructions
constructions = as.data.frame(readRDS("../donnees_resultat/Constr_Comm_2002_2021.rds"))
# liste des communes soumises au moins une fois à la loi SRU
communes = sqldf("SELECT code_commune FROM co_so")
# tous les logements sociaux du parc HLM des communes soumises au moins une fois à la loi SRU
constructions_com = sqldf("SELECT *
FROM constructions
WHERE DEPCOM in communes")
constructions_com a des informations sur 1399 mais il y a 1519 communes soumises à la loi SRU dans les données.
# liste des communes qui n'ont aucune construction de logements social du parc HLM après 2002
a = sqldf("SELECT *
FROM communes
EXCEPT
SELECT DEPCOM
FROM constructions_com")
117 communes qui sont présentes dans les bilans de la loi SRU ne sont pas présents dans le fichier sur le nombre de constructions.
La Corse et les DOM ne sont pas présents dans le fichier constructions (83 communes).
Paris (75056), Marseille (13055) et Lyon (69123) ont plusieurs
arrondissements. Ces communes sont inscrites avec un code de commune
dans le fichier des communes soumises et avec leurs codes
d’arrondissements dans le fichiers des constructions.
Paris : 75056 – 75101 à 75120
Marseille : 13055 – 13201 à 13216
Lyon : 69123 – 69381 à 69389
59248 devient commune déléguée de 59183 le premier janvier
2010.
74011, 74093, 74182, 74217, 74268 deviennent des communes déléguées de
74011 le premier janvier 2017.
Fourqueux (78251) devient commune déléguée au sein de
Saint-Germain-en-Laye (78551) (commune nouvelle) au premier janvier
2019.
78524 devient commune déléguée de 78158 le premier janvier 2019.
77005, 77124, 77447, 77517, 78090, 78128, 78238, 78601, 91390, 91533
ont des nombres d’habitants inférieurs à 3500 mais sont en Ile-de-France
donc le seuil de nombre d’habitants pour être soumis à l’article 55 de
la loi SRU est de 1500. Le fichier des constructions n’inclut peut-être
que les communes à partir d’un seuil d’habitants.
Les autres communes de cette liste sont 06136, 24026, 30123, 50601,
57537, 71221, 83064, 83087, 83106, 83121, 83140, 83143, 91433.
# Calcul des constructions pour les communes ayant plusieurs agglomérations
arrondissements =
sqldf("SELECT '13055',
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\",
sum(NbConstruct_TT) \"NbConstruct_TT\"
FROM constructions
WHERE DEPCOM < 13217 AND DEPCOM > 13200
UNION
SELECT '75056',
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\",
sum(NbConstruct_TT) \"NbConstruct_TT\"
FROM constructions
WHERE DEPCOM > 75100 AND DEPCOM < 75121
UNION
SELECT '69123',
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\",
sum(NbConstruct_TT) \"NbConstruct_TT\"
FROM constructions
WHERE DEPCOM > 69380 AND DEPCOM < 69390")
constructions = sqldf("SELECT * FROM constructions UNION SELECT * FROM arrondissements")
constructions_com = sqldf("SELECT DEPCOM FROM constructions")
# On assemble les dataframes contenant les données des communes ayant des arrondissements et des autres communes
df = sqldf("SELECT *
FROM co_so s JOIN constructions c ON s.code_commune = c.DEPCOM")
df = df[,-(ncol(co_so)+1)] # pour enlever la deuxième colonne contenant le code de la commune
# Nombre de constructions de LLS d'après le fichier RPLS entre 2005 et 2019
df$NbConstruct_05_19 = rowSums(df[,(ncol(co_so)+4):(ncol(co_so)+18)]) # somme des constructions de 2005 à 2019
# fichier si besoin visualisation des données
titi =
sqldf("SELECT code_commune,
constructions_totales, NbConstruct_05_19, variation_LLS_06_21,
constructions_totales - NbConstruct_05_19 \"Triennal - Annuel\",
constructions_totales - variation_LLS_06_21 \"Trienal - RPLS\",
NbConstruct_05_19 - variation_LLS_06_21 \"Annuel - RPLS\"
FROM df")
# différence entre les nombres des constructions selon les bilans annuels et trienaux
tri_ann = df$constructions_totales - df$variation_LLS_06_21
tri_rpls = df$constructions_totales - df$NbConstruct_05_19
ann_rpls = df$variation_LLS_06_21 - df$NbConstruct_05_19
summary(df$NbConstruct_05_19)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 79.25 156.00 306.84 295.00 22706.00
summary(df$variation_LLS_06_21)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -370.0 139.5 253.0 611.0 456.0 87962.0 483
summary(ann_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1016.0 5.0 39.0 213.9 113.0 65256.0 483
quantile(ann_rpls, probs = seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -1016.0 -34.2 0.0 9.0 22.2 39.0 56.0 88.6 142.4 263.0
## 100%
## 65256.0
df$diff_ann_rpls = ann_rpls
# code de Romain pour avoir les données RPLS sur les constructions après 2002 (RPLS_Charlotte.R)
geoloc2022 <- readRDS("../donnees_initiales/geoloc2022.rds")
# On garde les données des logements construits à partir 2002
# La méthode suivante n'est pas utilisée car elle prend plus de temps
# t1 = proc.time()
# geoloc <- filter(geoloc2022, geoloc2022$CONSTRUCT >= 2002)
# t1 = proc.time() - t1
# print(t1)
# On ajoute les codes des arrondissements de Lyon, Paris et Marseille aux codes des communes
communes_arr = as.data.frame(c(communes$code_commune, 13201:13216, 69381:69389, 75101:75120),
colnames = "code_commune")
# On garde les données des logements construits à partir 2002
# Méthode utilisée
#t1 = proc.time()
geoloc = sqldf("SELECT DEPCOM, FINAN, CONSTRUCT
FROM geoloc2022
WHERE CONSTRUCT >= 2002 AND
DEPCOM IN communes_arr")
#t1 = proc.time() - t1
#print(t1)
Il existe plusieurs financements des logements sociaux, certains ne
sont pas classés comme étant des logements sociaux selon la loi
SRU.
On fait 4 versions de ce qui peut-être des logements sociaux selon la
loi SRU : - on enlève les logements PLI (16) qui ne sont pas des
logements sociaux selon la loi SRU - on enlève les logements PLI (16) et
PCL (17) qui sont noté comme PLI dans le dictionnaire des variable du
fichier rpls dans les correspondances financement dans financement du
parc récent mais pas dans financement total - on enlève les logements
PLI (16), PCL (17) et les autres financements (49 et 99) - on enlève
tous les logements qui ne sont pas notés explicitement comme logements
sociaux dans la loi SRU (15, 16, 17, 49, 51, 55, 99)
# On enlève les logements financés par PLI qui ne sont pas des LS selon la loi SRU
geoloc_pli = sqldf("SELECT * FROM geoloc WHERE FINAN != 16")
# Retirer les PCL (possiblement non LS selon SRU)
geoloc_pli_pcl = sqldf("SELECT * FROM geoloc WHERE FINAN != 16 & FINAN != 17")
# Retirer les autres logements possiblements non LS selon SRU
geoloc_LS_2 = sqldf("SELECT *
FROM geoloc
WHERE FINAN NOT IN (16, 17, 49, 99)")
# Retirer les autres logements possiblements non LS selon SRU
geoloc_LS = sqldf("SELECT *
FROM geoloc
WHERE FINAN NOT IN (15, 16, 17, 49, 51, 55, 99)")
# Nombre de constructions de LS sociaux par commune et par année
Construct_pli = as.data.frame(table(geoloc_pli$DEPCOM, geoloc_pli$CONSTRUCT))
Construct_pli_pcl = as.data.frame(table(geoloc_pli_pcl$DEPCOM, geoloc_pli_pcl$CONSTRUCT))
Construct_LS_2 = as.data.frame(table(geoloc_LS_2$DEPCOM, geoloc_LS_2$CONSTRUCT))
Construct_LS = as.data.frame(table(geoloc_LS$DEPCOM, geoloc_LS$CONSTRUCT))
colnames(Construct_pli) <- c("code_commune","YEAR","NbConstruct")
colnames(Construct_pli_pcl) <- c("code_commune","YEAR","NbConstruct")
colnames(Construct_LS_2) <- c("code_commune", "YEAR", "NbConstruct")
colnames(Construct_LS) <- c("code_commune","YEAR","NbConstruct")
Construct_pli <- pivot_wider(Construct_pli, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
Construct_pli_pcl <- pivot_wider(Construct_pli_pcl, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
Construct_LS_2 <- pivot_wider(Construct_LS_2, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
Construct_LS <- pivot_wider(Construct_LS, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
# On assemble les arrondissements de Paris, Lyon et Marseille
arrondissements_commune = function(constructs){
sqldf("SELECT '13055' \"code_commune\",
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\"
FROM constructs
WHERE code_commune < 13217 AND code_commune > 13200
UNION
SELECT '75056' \"code_commune\",
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\"
FROM constructs
WHERE code_commune > 75100 AND code_commune < 75121
UNION
SELECT '69123' \"code_commune\",
sum(NbConstruct_2002) \"NbConstruct_2002\",
sum(NbConstruct_2003) \"NbConstruct_2003\",
sum(NbConstruct_2004) \"NbConstruct_2004\",
sum(NbConstruct_2005) \"NbConstruct_2005\",
sum(NbConstruct_2006) \"NbConstruct_2006\",
sum(NbConstruct_2007) \"NbConstruct_2007\",
sum(NbConstruct_2008) \"NbConstruct_2008\",
sum(NbConstruct_2009) \"NbConstruct_2009\",
sum(NbConstruct_2010) \"NbConstruct_2010\",
sum(NbConstruct_2011) \"NbConstruct_2011\",
sum(NbConstruct_2012) \"NbConstruct_2012\",
sum(NbConstruct_2013) \"NbConstruct_2013\",
sum(NbConstruct_2014) \"NbConstruct_2014\",
sum(NbConstruct_2015) \"NbConstruct_2015\",
sum(NbConstruct_2016) \"NbConstruct_2016\",
sum(NbConstruct_2017) \"NbConstruct_2017\",
sum(NbConstruct_2018) \"NbConstruct_2018\",
sum(NbConstruct_2019) \"NbConstruct_2019\",
sum(NbConstruct_2020) \"NbConstruct_2020\",
sum(NbConstruct_2021) \"NbConstruct_2021\"
FROM constructs
WHERE code_commune > 69380 AND code_commune < 69390
UNION
SELECT *
FROM constructs")}
Construct_pli = arrondissements_commune(Construct_pli)
Construct_pli_pcl = arrondissements_commune(Construct_pli_pcl)
Construct_LS_2 = arrondissements_commune(Construct_LS_2)
Construct_LS = arrondissements_commune(Construct_LS)
df_1 = sqldf("SELECT *
FROM co_so s JOIN Construct_pli c USING(code_commune)")
df_1 = df_1[,-(ncol(co_so)+1)] # pour enlever la deuxième colonne contenant le code de la commune
df_2 = sqldf("SELECT *
FROM co_so s JOIN Construct_pli_pcl c USING(code_commune)")
df_2 = df_2[,-(ncol(co_so)+1)] # pour enlever la deuxième colonne contenant le code de la commune
df_3 = sqldf("SELECT *
FROM co_so s JOIN Construct_LS_2 c USING(code_commune)")
df_3 = df_3[,-(ncol(co_so)+1)] # pour enlever la deuxième colonne contenant le code de la commune
df_4 = sqldf("SELECT *
FROM co_so s JOIN Construct_pli c USING(code_commune)")
df_4 = df_4[,-(ncol(co_so)+1)] # pour enlever la deuxième colonne contenant le code de la commune
# statistiques descriptives entre le nombre de constructions selon les bilans triennaux et le fichier RPLS avec la première version
summary(df_1$constructions_totales - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -490.0 96.5 189.0 485.9 347.0 63162.0 831
quantile(df_1$constructions_totales - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -490 47 81 110 143 189 238 304 414 638 63162
# statistiques descriptives entre le nombre de constructions selon les bilans annuels et le fichier RPLS avec la première version
summary(df_1$variation_LLS_06_21 - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1000.0 5.0 39.0 216.9 113.5 65524.0 483
quantile(df_1$variation_LLS_06_21 - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -1000.0 -28.2 1.0 10.0 23.0 39.0 57.0 89.0 145.0 263.2
## 100%
## 65524.0
df_1$diff_cons_ann_rpls = df_1$variation_LLS_06_21 - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)])
df_1$diff_cons_tri_rpls = df_1$constructions_totales - rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)])
df_1$rpls = rowSums(df_1[,(ncol(df_1)-16):(ncol(df_1)-2)])
# statistiques descriptives entre le nombre de constructions selon les bilans triennaux et le fichier RPLS avec la version 2
summary(df_2$constructions_totales - rowSums(df_2[,(ncol(df_2)-16):(ncol(df_2)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -570.0 96.5 187.0 482.3 346.5 62894.0 831
quantile(df_2$constructions_totales - rowSums(df_2[,(ncol(df_1)-16):(ncol(df_2)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 2 67 93 130 162 207 265 343 457 708 67170
# statistiques descriptives entre le nombre de constructions selon les bilans annuels et le fichier RPLS avec la version 2
summary(df_2$variation_LLS_06_21 - rowSums(df_2[,(ncol(df_2)-16):(ncol(df_2)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1016.0 5.0 39.0 213.9 113.0 65256.0 483
quantile(df_2$variation_LLS_06_21 - rowSums(df_1[,(ncol(df_2)-16):(ncol(df_2)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -1000.0 -28.2 1.0 10.0 23.0 39.0 57.0 89.0 145.0 263.2
## 100%
## 65524.0
df_2$diff_cons_ann_rpls = df_2$variation_LLS_06_21 - rowSums(df_2[,(ncol(df_2)-16):(ncol(df_2)-2)])
df_2$diff_cons_tri_rpls = df_2$constructions_totales - rowSums(df_2[,(ncol(df_2)-16):(ncol(df_2)-2)])
df_2$rpls = rowSums(df_2[,(ncol(df_2)-16):(ncol(df_2)-2)])
# statistiques descriptives entre le nombre de constructions selon les bilans triennaux et le fichier RPLS avec la version 3
summary(df_3$constructions_totales - rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -489.0 97.0 191.0 489.7 348.5 63342.0 831
quantile(df_3$constructions_totales - rowSums(df_3[,(ncol(df_1)-16):(ncol(df_3)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 2 68 94 131 164 212 266 344 460 708 67535
# statistiques descriptives entre le nombre de constructions selon les bilans annuels et le fichier RPLS avec la version 3
summary(df_3$variation_LLS_06_21 - rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -785.0 6.0 40.0 222.8 114.5 65704.0 483
quantile(df_3$variation_LLS_06_21 - rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -785.0 -21.4 1.0 12.0 25.0 40.0 60.0 90.0 147.4 275.2
## 100%
## 65704.0
df_3$diff_cons_ann_rpls = df_3$variation_LLS_06_21 - rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)])
df_3$diff_cons_tri_rpls = df_3$constructions_totales - rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)])
df_3$rpls = rowSums(df_3[,(ncol(df_3)-16):(ncol(df_3)-2)])
# statistiques descriptives entre le nombre de constructions selon les bilans triennaux et le fichier RPLS avec la version 4
summary(df_4$constructions_totales - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -490.0 96.5 189.0 485.9 347.0 63162.0 831
quantile(df_4$constructions_totales - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -490 47 81 110 143 189 238 304 414 638 63162
# statistiques descriptives entre le nombre de constructions selon les bilans annuels et le fichier RPLS avec la version 4
summary(df_4$variation_LLS_06_21 - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)]))
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1000.0 5.0 39.0 216.9 113.5 65524.0 483
quantile(df_4$variation_LLS_06_21 - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)]),
seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## -1000.0 -28.2 1.0 10.0 23.0 39.0 57.0 89.0 145.0 263.2
## 100%
## 65524.0
df_4$diff_cons_ann_rpls = df_4$variation_LLS_06_21 - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)])
df_4$diff_cons_tri_rpls = df_4$constructions_totales - rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)])
df_4$rpls = rowSums(df_4[,(ncol(df_4)-16):(ncol(df_4)-2)])
# Les données des bilans SRU des communes soumises à la loi SRU tous les ans
# entre 2006 et 2021
communes_soumises_06_21 =
sqldf("SELECT c.*
FROM co_so_06 c JOIN
co_so_07 USING(code_commune) JOIN
co_so_08 USING(code_commune) JOIN
co_so_09 USING(code_commune) JOIN
co_so_10 USING(code_commune) JOIN
co_so_11 USING(code_commune) JOIN
co_so_12 USING(code_commune) JOIN
co_so_13 USING(code_commune) JOIN
co_so_14 USING(code_commune) JOIN
co_so_15 USING(code_commune) JOIN
co_so_16 USING(code_commune) JOIN
co_so_17 USING(code_commune) JOIN
co_so_18 USING(code_commune) JOIN
co_so_19 USING(code_commune) JOIN
co_so_20 USING(code_commune) JOIN
co_so_21 USING(code_commune)")
communes_soumises_05_19_tri =
sqldf("SELECT c.*
FROM co_so_05_07 c JOIN
co_so_08_10 USING(code_commune) JOIN
co_so_11_13 USING(code_commune) JOIN
co_so_14_16 USING(code_commune) JOIN
co_so_17_19 USING(code_commune)")
# liste des communes apparaissant dans tous les bilans annuels
communes = communes_soumises_06_21$code_commune
# liste des communes apparaissant dans tous les bilans triennaux
communes_tri = communes_soumises_05_19_tri$code_commune
# il faut ajouter les arrondissement de Marseille, Paris et Lyon
communes = as.data.frame(c(communes, 13201:13216, 69381:69389, 75101:75120),
col.names = 'code_commune')
communes_tri = as.data.frame(c(communes_tri, 13201:13216, 69381:69389, 75101:75120),
col.names = 'code_commune')
# On garde les lignes du fichier RPLS des logements construits à partir de 2002
# dans les communes soumises tous les ans à la loi SRU
rpls_2002_soumises =
sqldf("SELECT DEPCOM, CONSTRUCT, FINAN
FROM geoloc2022
WHERE CONSTRUCT >= 2002 AND DEPCOM IN communes")
# dans les communes soumises pour tous les bilans triennaux à la loi SRU
rpls_2002_soumises_tri =
sqldf("SELECT DEPCOM, CONSTRUCT, FINAN
FROM geoloc2022
WHERE CONSTRUCT >= 2002 AND DEPCOM IN communes_tri")
Il existe plusieurs financements des logements sociaux, certains ne
sont pas classés comme étant des logements sociaux selon la loi
SRU.
On fait 4 versions de ce qui peut-être des logements sociaux selon la
loi SRU : - on enlève les logements PLI (16) qui ne sont pas des
logements sociaux selon la loi SRU - on enlève les logements PLI (16) et
PCL (17) qui sont noté comme PLI dans le dictionnaire des variable du
fichier rpls dans les correspondances financement dans financement du
parc récent mais pas dans financement total - on enlève les logements
PLI (16), PCL (17) et les autres financements (49 et 99) - on enlève
tous les logements qui ne sont pas notés explicitement comme logements
sociaux dans la loi SRU (15, 16, 17, 49, 51, 55, 99)
# On enlève les logements financés par PLI qui ne sont pas des LS selon la loi SRU
rpls_2002_soumises_1 = sqldf("SELECT *
FROM rpls_2002_soumises
WHERE FINAN != 16")
rpls_2002_soumises_1_tri = sqldf("SELECT *
FROM rpls_2002_soumises_tri
WHERE FINAN != 16")
# Retirer les PCL (possiblement non LS selon SRU)
rpls_2002_soumises_2 = sqldf("SELECT *
FROM rpls_2002_soumises
WHERE FINAN != 16 & FINAN != 17")
rpls_2002_soumises_2_tri = sqldf("SELECT *
FROM rpls_2002_soumises_tri
WHERE FINAN != 16 & FINAN != 17")
# Retirer les autres logements possiblements non LS selon SRU
rpls_2002_soumises_3 = sqldf("SELECT *
FROM rpls_2002_soumises
WHERE FINAN NOT IN (16, 17, 49, 99)")
rpls_2002_soumises_3_tri = sqldf("SELECT *
FROM rpls_2002_soumises_tri
WHERE FINAN NOT IN (16, 17, 49, 99)")
# Retirer les autres logements possiblements non LS selon SRU
rpls_2002_soumises_4 = sqldf("SELECT *
FROM rpls_2002_soumises
WHERE FINAN NOT IN (15, 16, 17, 49, 51, 55, 99)")
rpls_2002_soumises_4_tri = sqldf("SELECT *
FROM rpls_2002_soumises_tri
WHERE FINAN NOT IN (15, 16, 17, 49, 51, 55, 99)")
# Nombre de constructions de LS sociaux par commune et par année
rpls_const_1 = as.data.frame(table(rpls_2002_soumises_1$DEPCOM, rpls_2002_soumises_1$CONSTRUCT))
rpls_const_2 = as.data.frame(table(rpls_2002_soumises_2$DEPCOM, rpls_2002_soumises_2$CONSTRUCT))
rpls_const_3 = as.data.frame(table(rpls_2002_soumises_3$DEPCOM, rpls_2002_soumises_3$CONSTRUCT))
rpls_const_4 = as.data.frame(table(rpls_2002_soumises_4$DEPCOM, rpls_2002_soumises_4$CONSTRUCT))
rpls_const_1_tri = as.data.frame(table(rpls_2002_soumises_1_tri$DEPCOM, rpls_2002_soumises_1_tri$CONSTRUCT))
rpls_const_2_tri = as.data.frame(table(rpls_2002_soumises_2_tri$DEPCOM, rpls_2002_soumises_2_tri$CONSTRUCT))
rpls_const_3_tri = as.data.frame(table(rpls_2002_soumises_3_tri$DEPCOM, rpls_2002_soumises_3_tri$CONSTRUCT))
rpls_const_4_tri = as.data.frame(table(rpls_2002_soumises_4_tri$DEPCOM, rpls_2002_soumises_4_tri$CONSTRUCT))
colnames(rpls_const_1) <- c("code_commune","YEAR","NbConstruct")
colnames(rpls_const_2) <- c("code_commune","YEAR","NbConstruct")
colnames(rpls_const_3) <- c("code_commune", "YEAR", "NbConstruct")
colnames(rpls_const_4) <- c("code_commune","YEAR","NbConstruct")
colnames(rpls_const_1_tri) <- c("code_commune","YEAR","NbConstruct")
colnames(rpls_const_2_tri) <- c("code_commune","YEAR","NbConstruct")
colnames(rpls_const_3_tri) <- c("code_commune", "YEAR", "NbConstruct")
colnames(rpls_const_4_tri) <- c("code_commune","YEAR","NbConstruct")
rpls_const_1 <- pivot_wider(rpls_const_1, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_2 <- pivot_wider(rpls_const_2, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_3 <- pivot_wider(rpls_const_3, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_4 <- pivot_wider(rpls_const_4, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_1_tri <- pivot_wider(rpls_const_1_tri, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_2_tri <- pivot_wider(rpls_const_2_tri, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_3_tri <- pivot_wider(rpls_const_3_tri, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_4_tri <- pivot_wider(rpls_const_4_tri, names_from = YEAR,
values_from = NbConstruct,
names_prefix = "NbConstruct_")
rpls_const_1 = arrondissements_commune(rpls_const_1)
rpls_const_2 = arrondissements_commune(rpls_const_2)
rpls_const_3 = arrondissements_commune(rpls_const_3)
rpls_const_4 = arrondissements_commune(rpls_const_4)
rpls_const_1_tri = arrondissements_commune(rpls_const_1_tri)
rpls_const_2_tri = arrondissements_commune(rpls_const_2_tri)
rpls_const_3_tri = arrondissements_commune(rpls_const_3_tri)
rpls_const_4_tri = arrondissements_commune(rpls_const_4_tri)
Pour les 4 versions, il y a 8 communes qui ne sont pas présentes dans les données RPLS depuis 2002 mais qui sont des communes soumises à la loi SRU tous les ans de 2006 à 2021 (donc les informations des communes du premier janvier 2005 au premier janvier 2020). Ce sont les communes : 2B037, 2B120, 77124, 97224, 97229, 97309, 97415 et 97422.
sqldf("SELECT code_commune FROM communes_soumises_06_21
EXCEPT
SELECT code_commune FROM rpls_const_4")
## code_commune
## 1 2B037
## 2 2B120
## 3 77124
## 4 97224
## 5 97229
## 6 97309
## 7 97415
## 8 97422
sqldf("SELECT code_commune FROM communes_soumises_05_19_tri
EXCEPT
SELECT code_commune FROM rpls_const_1_tri")
## code_commune
## 1 2B037
## 2 2B120
## 3 77124
Pour les 4 versions de la définition de logement social, 3 communes présentes dans tous les bilans triennaux entre 2005 et 2019 ne sont pas présentes dans le fichier RPLS depuis 2002. Ce sont les communes 2B037, 2B120 et 77124, on les retrouve dans les 8 communes qui sont dans tous les bilans annuels mais pas les données RPLS depuis 2002.
geoloc2022[geoloc2022$DEPCOM=='2B037',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='2B120',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='77124',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='97224',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='97229',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='97309',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='97415',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
geoloc2022[geoloc2022$DEPCOM=='97422',]
## [1] DEPCOM IDENT_REP IDENT_INT
## [4] IDENT_ORG DROIT CODEPOSTAL
## [7] LIBCOM NUMVOIE INDREP
## [10] TYPVOIE NOMVOIE NUMAPPT
## [13] NUMBOITE ESC COULOIR
## [16] ETAGE COMPLIDENT ENTREE
## [19] BAT IMMEU COMPLGEO
## [22] LIEUDIT QPV TYPECONST
## [25] NBPIECE SURFHAB CONSTRUCT
## [28] LOCAT PATRIMOINE ORIGINE
## [31] RSEXPRO SIRETEXPRO FINAN
## [34] FINANAUTRE CONV NUMCONV
## [37] DATCONV SORTIEPATRIM OLDLOGT
## [40] NEWLOGT MODE BAIL
## [43] MODESURF SURFMODE LOYERPRINC
## [46] LOYERACC CONTRIB CUS
## [49] DPEDATE DPEENERGIE DPESERRE
## [52] SRU_EXPIR SRU_ALINEA IDENTGES
## [55] CODSEGPATRIM LIBSEGPATRIM LOYERMAXAPL
## [58] LOYERMAXCUS QUALACQ MISCOMMERCIAL
## [61] PRIXVENTE PRODFIN REMLOCDATE
## [64] CONTRESLOG PMR DATMISEVENTE
## [67] DATVEFFECT DATE_DEP_DERLOCAT DPE_CONSO_ENER
## [70] DPE_CONSO_GES DPE_NUM_REF IDENT_FISCAL
## [73] CAT_ORG RS SIRET
## [76] DEP LIBDEP REG
## [79] LIBREG LIBEPCI DEPARTEMENTS_DE_L_EPCI
## [82] REGIONS_DE_L_EPCI ARN finan_cus
## [85] mes_sanscumul loymoy age
## [88] deconv duree_vacance ANNEE_REMLOC
## [91] MOIS_REMLOC MOIS_BAIL ANNEE_BAIL
## [94] BAIL_DATE REMLOCDATE_DATE EPCI
## <0 lignes> (ou 'row.names' de longueur nulle)
Ces 8 communes n’apparaissent pas dans le fichier RPLS.
communes_soumises_06_21$variation_LLS_06_21 =
communes_soumises_06_21$LLS_21 - communes_soumises_06_21$LLS_06
communes_soumises_05_19_tri$constructions_totales =
communes_soumises_05_19_tri$construction_05_07 +
communes_soumises_05_19_tri$construction_08_10 +
communes_soumises_05_19_tri$construction_11_13 +
communes_soumises_05_19_tri$construction_14_16 +
communes_soumises_05_19_tri$construction_17_19
concat_diff_ann = function(df_sru, df_rpls){
df_tt = sqldf("SELECT * FROM df_sru JOIN df_rpls USING(code_commune)")
df_tt$rpls = rowSums(df_tt[,(ncol(df_tt)-16):(ncol(df_tt)-2)])
df_tt$diff_ann_rpls = df_tt$variation_LLS_06_21 - df_tt$rpls
print("La différence entre la variation du nombre de logements sociaux entre les premiers janvier 2005 et 2020 et le nombre de constructions de logements sociaux dans le fichier rpls :")
print(summary(df_tt$diff_ann_rpls))
print(quantile(df_tt$diff_ann_rpls, seq(0, 1, 0.1), na.rm = TRUE))
df_tt}
concat_diff_tri = function(df_sru, df_rpls){
df_tt = sqldf("SELECT * FROM df_sru JOIN df_rpls USING(code_commune)")
df_tt$rpls = rowSums(df_tt[,(ncol(df_tt)-16):(ncol(df_tt)-2)])
df_tt$diff_tri_rpls = df_tt$constructions_totales - df_tt$rpls
print("La différence entre les nombre de constructions de logements sociaux des bilans triennaux de la loi SRU et le nombre de constructions de logements sociaux dans le fichier rpls :")
print(summary(df_tt$diff_tri_rpls))
print(quantile(df_tt$diff_tri_rpls, seq(0, 1, 0.1), na.rm = TRUE))
df_tt
}
# les différences entre les données des bilans annuels et du fichier rpls
res_1 = concat_diff_ann(communes_soumises_06_21, rpls_const_1)
## [1] "La différence entre la variation du nombre de logements sociaux entre les premiers janvier 2005 et 2020 et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -845.0 7.0 35.0 236.3 93.0 65524.0
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -845 -9 3 11 22 35 50 73 120 207 65524
boxplot(res_1$diff_ann_rpls, ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
col = 'lightpink')
boxplot(res_1$diff_ann_rpls[res_1$diff_ann_rpls<3000], ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", col = 'lightpink')
hist(res_1$diff_ann_rpls[res_1$diff_ann_rpls<3000],
xlab = "valeur absolue des différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", breaks = 30,
col = 'lightpink')
ggplot(res_1, aes(x = diff_ann_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightpink') + scale_x_log10() +
labs(title = "Différences entre les variations et les constructions de LLS",
subtitle = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning: Transformation introduced infinite values in continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 87 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans triennaux et du fichier rpls
res_1_tri = concat_diff_tri(communes_soumises_05_19_tri, rpls_const_1_tri)
## [1] "La différence entre les nombre de constructions de logements sociaux des bilans triennaux de la loi SRU et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -490.0 96.5 189.0 485.9 347.0 63162.0 11
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -490 47 81 110 143 189 238 304 414 638 63162
boxplot(res_1_tri$diff_tri_rpls, ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS")
boxplot(res_1_tri$diff_tri_rpls[res_1_tri$diff_tri_rpls<5000],
ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000")
hist(res_1_tri$diff_tri_rpls[res_1_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000", breaks = 25,
xlab = "différences")
ggplot(res_1_tri, aes(x = diff_tri_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightblue') + scale_x_log10() +
labs(title = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning in self$trans$transform(x): Transformation introduced infinite values in
## continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 20 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans annuels et du fichier rpls
res_2 = concat_diff_ann(communes_soumises_06_21, rpls_const_2)
## [1] "La différence entre la variation du nombre de logements sociaux entre les premiers janvier 2005 et 2020 et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -845.0 6.0 35.0 232.3 92.0 65256.0
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -845 -13 2 11 22 35 50 73 118 207 65256
boxplot(res_2$diff_ann_rpls, ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
col = 'lightpink')
boxplot(res_2$diff_ann_rpls[res_2$diff_ann_rpls<3000], ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 3 valeurs supérieurs à 3000", col = 'lightpink')
hist(res_2$diff_ann_rpls[res_2$diff_ann_rpls<3000],
xlab = "valeur absolue des différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 3 valeurs supérieurs à 3000", breaks = 30,
col = 'lightpink')
ggplot(res_2, aes(x = diff_ann_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightpink') + scale_x_log10() +
labs(title = "Différences entre les variations et les constructions de LLS",
subtitle = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning: Transformation introduced infinite values in continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 92 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans triennaux et du fichier rpls
res_2_tri = concat_diff_tri(communes_soumises_05_19_tri, rpls_const_2_tri)
## [1] "La différence entre les nombre de constructions de logements sociaux des bilans triennaux de la loi SRU et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -570.0 96.5 187.0 482.3 346.5 62894.0 11
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -570 47 81 110 143 187 237 304 414 629 62894
boxplot(res_2_tri$diff_tri_rpls, ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS")
boxplot(res_2_tri$diff_tri_rpls[res_2_tri$diff_tri_rpls<5000],
ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000")
hist(res_2_tri$diff_tri_rpls[res_2_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000", breaks = 25,
xlab = "différences")
ggplot(res_2_tri, aes(x = diff_tri_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightblue') + scale_x_log10() +
labs(title = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning in self$trans$transform(x): Transformation introduced infinite values in
## continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 20 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans annuels et du fichier rpls
res_3 = concat_diff_ann(communes_soumises_06_21, rpls_const_3)
## [1] "La différence entre la variation du nombre de logements sociaux entre les premiers janvier 2005 et 2020 et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -747.0 8.0 35.0 240.5 93.0 65704.0
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -747 -6 4 12 23 35 51 75 120 212 65704
boxplot(res_3$diff_ann_rpls, ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
col = 'lightpink')
boxplot(res_3$diff_ann_rpls[res_3$diff_ann_rpls<3000], ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", col = 'lightpink')
hist(res_3$diff_ann_rpls[res_3$diff_ann_rpls<3000],
xlab = "valeur absolue des différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", breaks = 30,
col = 'lightpink')
ggplot(res_3, aes(x = diff_ann_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightpink') + scale_x_log10() +
labs(title = "Différences entre les variations et les constructions de LLS",
subtitle = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning: Transformation introduced infinite values in continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 82 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans triennaux et du fichier rpls
res_3_tri = concat_diff_tri(communes_soumises_05_19_tri, rpls_const_3_tri)
## [1] "La différence entre les nombre de constructions de logements sociaux des bilans triennaux de la loi SRU et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -489.0 97.0 191.0 489.7 348.5 63342.0 11
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -489 47 81 114 145 191 242 311 422 655 63342
boxplot(res_3_tri$diff_tri_rpls, ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS")
boxplot(res_3_tri$diff_tri_rpls[res_3_tri$diff_tri_rpls<5000],
ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000")
hist(res_3_tri$diff_tri_rpls[res_3_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000", breaks = 25,
xlab = "différences")
ggplot(res_3_tri, aes(x = diff_tri_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightblue') + scale_x_log10() +
labs(title = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning in self$trans$transform(x): Transformation introduced infinite values in
## continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 20 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans annuels et du fichier rpls
res_4 = concat_diff_ann(communes_soumises_06_21, rpls_const_4)
## [1] "La différence entre la variation du nombre de logements sociaux entre les premiers janvier 2005 et 2020 et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -747.0 8.0 35.0 240.5 93.0 65704.0
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -747 -6 4 12 23 35 51 75 120 212 65704
boxplot(res_4$diff_ann_rpls, ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
col = 'lightpink')
boxplot(res_4$diff_ann_rpls[res_4$diff_ann_rpls<3000], ylab = "différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", col = 'lightpink')
hist(res_4$diff_ann_rpls[res_4$diff_ann_rpls<3000],
xlab = "valeur absolue des différences",
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieurs à 3000", breaks = 30,
col = 'lightpink')
ggplot(res_4, aes(x = diff_ann_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightpink') + scale_x_log10() +
labs(title = "Différences entre les variations et les constructions de LLS",
subtitle = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning: Transformation introduced infinite values in continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 82 rows containing non-finite values (`stat_bin()`).
# les différences entre les données des bilans triennaux et du fichier rpls
res_4_tri = concat_diff_tri(communes_soumises_05_19_tri, rpls_const_4_tri)
## [1] "La différence entre les nombre de constructions de logements sociaux des bilans triennaux de la loi SRU et le nombre de constructions de logements sociaux dans le fichier rpls :"
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -489.0 97.0 191.0 489.7 348.5 63342.0 11
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## -489 47 81 114 145 191 242 311 422 655 63342
boxplot(res_4_tri$diff_tri_rpls, ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS")
boxplot(res_4_tri$diff_tri_rpls[res_4_tri$diff_tri_rpls<5000],
ylab = "différences", col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000")
hist(res_4_tri$diff_tri_rpls[res_4_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieurs à 5000", breaks = 25,
xlab = "différences")
ggplot(res_4_tri, aes(x = diff_tri_rpls)) +
geom_histogram(color = 'darkgrey', fill = 'lightblue') + scale_x_log10() +
labs(title = "Différences entres les constructions LLS des bilans triennaux et RPLS",
sub = "entre 2005 et 2019", x = 'valeurs absolues des différences')
## Warning in self$trans$transform(x): Production de NaN
## Warning in self$trans$transform(x): Transformation introduced infinite values in
## continuous x-axis
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 20 rows containing non-finite values (`stat_bin()`).
boxplot(res_1$diff_ann_rpls,
res_2$diff_ann_rpls,
res_3$diff_ann_rpls,
res_4$diff_ann_rpls,
xlab = "différences", horizontal = TRUE, ylab = "versions",
names = c(1, 2, 3, 4),
main = "Différences entre les variations et les constructions de LLS",
col = 'lightpink')
Les 4 valeurs les plus extrêmes pour les différentes versions sont des valeurs des villes de Paris, Lyon, Marseille et Annecy. En effet, Paris, Marseille et Lyon ont des effectis de logements beaucoup plus grands que les autres villes de France, elles ont ainsi des chiffres proportionnels à leur taille. Annecy est issue de la fusion de 6 communes depuis le premier janvier 2017, il y a donc des grandes différences dans les nombres de constructions et le nombre de logements locatifs sociaux car il y a un changement durant la période couverte des logements locatifs sociaux.
boxplot(res_1_tri$diff_tri_rpls,
res_2_tri$diff_tri_rpls,
res_3_tri$diff_tri_rpls,
res_4_tri$diff_tri_rpls,
xlab = "différences", horizontal = TRUE, ylab = "versions",
names = c(1, 2, 3, 4),
main = "Différences entre les constructions de LLS selon RPLS et SRU",
col = 'lightblue')
Pour les différences entre les données de constructions de logements sociaux des bilans triennaux et du fichier RPLS, on retrouve les 3 villes Paris, Lyon, Marseille dans les valeurs les plus extrêmes, auxquelles s’ajoute Nice et Bordeaux. Ces 5 villes sont parmi les plus grandes de France.
boxplot(res_1$diff_ann_rpls[res_1$diff_ann_rpls<3000],
res_2$diff_ann_rpls[res_2$diff_ann_rpls<2000],
res_3$diff_ann_rpls[res_3$diff_ann_rpls<3000],
res_4$diff_ann_rpls[res_4$diff_ann_rpls<3000],
xlab = "différences", horizontal = TRUE, ylab = "versions",
names = c(1, 2, 3, 4),
main = "Différences entre les variations et les constructions de LLS",
sub = "sans les 4 valeurs supérieures à 2000", col = 'lightpink')
boxplot(res_1_tri$diff_tri_rpls[res_1_tri$diff_tri_rpls<5000],
res_2_tri$diff_tri_rpls[res_2_tri$diff_tri_rpls<5000],
res_3_tri$diff_tri_rpls[res_3_tri$diff_tri_rpls<5000],
res_4_tri$diff_tri_rpls[res_4_tri$diff_tri_rpls<5000],
xlab = "différences", horizontal = TRUE, ylab = "versions",
names = c(1, 2, 3, 4),
main = "Différences entre les constructions de LLS selon SRU et RPLS",
sub = "sans les 5 valeurs supérieures à 5000", col = 'lightblue')
par(mfrow = c(2, 2), mar = c(4, 1, 1, 1), oma = c(2, 2, 2, 1))
hist(res_1$diff_ann_rpls[res_1$diff_ann_rpls<3000], col = 'lightpink',
main = "version 1", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_2$diff_ann_rpls[res_2$diff_ann_rpls<2000], col = 'lightpink',
main = "version 2", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_3$diff_ann_rpls[res_3$diff_ann_rpls<3000], col = 'lightpink',
main = "version 3", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_4$diff_ann_rpls[res_4$diff_ann_rpls<3000], col = 'lightpink',
main = "version 4", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
title(main = "Différences entre les variations LLS des bilans SRU et les construction RPLS",
sub = "sans 4 valeurs supérieures à 2000", outer = TRUE, line = 1)
par(mfrow = c(2, 2), mar = c(4, 1, 1, 1), oma = c(2, 2, 2, 1))
hist(res_1_tri$diff_tri_rpls[res_1_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "version 1", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_2_tri$diff_tri_rpls[res_2_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "version 2", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_3_tri$diff_tri_rpls[res_3_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "version 3", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
hist(res_4_tri$diff_tri_rpls[res_4_tri$diff_tri_rpls<5000], col = 'lightblue',
main = "version 4", breaks = 25, cex.lab = 0.8, cex.main = 1,
xlab = "différences")
title(main = "Différences entre les constructions LLS des bilans triennaux et RPLS",
sub = "sans 5 valeurs supérieures à 5000", outer = TRUE, line = 1)
Les résultats des 4 versions sont très similaires.
Les tailles des communes ont une grande importance sur les différences entre les données des logements sociaux des bilans de la loi SRU et du fichier RPLS. On va donc calculer des pourcentages de ces différences par rapport au nombre de logements sociaux construits selon le fichier rpls.
Il existe deux communes qui n’ont pas de logements sociaux construits selon le fichier rpls entre 2005 et 2019, il s’agit de 13062 et 77249. On ne pourra pas diviser par le nombre de logements construits selon RPLS pour ces deux communes. On les enlève donc des données.
res_1 = res_1[res_1$rpls != 0,]
res_2 = res_2[res_2$rpls != 0,]
res_3 = res_3[res_3$rpls != 0,]
res_4 = res_4[res_4$rpls != 0,]
res_1_tri = res_1_tri[res_1_tri$rpls != 0,]
res_2_tri = res_2_tri[res_2_tri$rpls != 0,]
res_3_tri = res_3_tri[res_3_tri$rpls != 0,]
res_4_tri = res_4_tri[res_4_tri$rpls != 0,]
# pour les différences entre les données SRU annuelles et RPLS
res_1$diff_pourc_ann_rpls = res_1$diff_ann_rpls / res_1$rpls
summary(res_1$diff_pourc_ann_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.00000 0.03712 0.16012 0.42447 0.45409 36.66667
quantile(res_1$diff_pourc_ann_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50%
## -1.00000000 -0.04490670 0.01521912 0.05933783 0.10721718 0.16012085
## 60% 70% 80% 90% 100%
## 0.23597818 0.36535948 0.54891041 0.85897275 36.66666667
boxplot(res_1$diff_pourc_ann_rpls,
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink')
boxplot(res_1$diff_pourc_ann_rpls[res_1$diff_pourc_ann_rpls<10],
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieure à 10",
col = 'lightpink')
hist(res_1$diff_pourc_ann_rpls[res_1$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieur à 10")
# pour les différences entre les données SRU triennales et RPLS
res_1_tri$diff_pourc_tri_rpls = res_1_tri$diff_tri_rpls / res_1_tri$rpls
summary(res_1_tri$diff_pourc_tri_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.4681 0.4945 0.8663 1.5186 1.4972 82.0000 11
quantile(res_1_tri$diff_pourc_tri_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60%
## -0.4680851 0.2517205 0.4169125 0.5679915 0.7144432 0.8663102 1.0559357
## 70% 80% 90% 100%
## 1.3294795 1.7306710 2.6912587 82.0000000
boxplot(res_1_tri$diff_pourc_tri_rpls, col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS")
boxplot(res_1_tri$diff_pourc_tri_rpls[res_1_tri$diff_pourc_tri_rpls<10],
col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
hist(res_1_tri$diff_pourc_tri_rpls[res_1_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
# pour les différences entre les données SRU annuelles et RPLS
res_2$diff_pourc_ann_rpls = res_2$diff_ann_rpls / res_2$rpls
summary(res_2$diff_pourc_ann_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.0000 0.0349 0.1591 0.4186 0.4541 36.6667
quantile(res_2$diff_pourc_ann_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50%
## -1.000000000 -0.053155286 0.008187135 0.057254138 0.105930577 0.159090909
## 60% 70% 80% 90% 100%
## 0.232214419 0.365359477 0.544074507 0.858972746 36.666666667
boxplot(res_2$diff_pourc_ann_rpls,
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink')
boxplot(res_2$diff_pourc_ann_rpls[res_2$diff_pourc_ann_rpls<10],
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieure à 10",
col = 'lightpink')
hist(res_2$diff_pourc_ann_rpls[res_2$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieur à 10")
# pour les différences entre les données SRU triennales et RPLS
res_2_tri$diff_pourc_tri_rpls = res_2_tri$diff_tri_rpls / res_2_tri$rpls
summary(res_2_tri$diff_pourc_tri_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.4681 0.4935 0.8615 1.5094 1.4872 82.0000 11
quantile(res_2_tri$diff_pourc_tri_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60%
## -0.4680851 0.2517205 0.4121795 0.5593600 0.7019279 0.8615385 1.0456187
## 70% 80% 90% 100%
## 1.3242553 1.7037471 2.6912587 82.0000000
boxplot(res_2_tri$diff_pourc_tri_rpls, col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS")
boxplot(res_2_tri$diff_pourc_tri_rpls[res_2_tri$diff_pourc_tri_rpls<10],
col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
hist(res_2_tri$diff_pourc_tri_rpls[res_2_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
# pour les différences entre les données SRU annuelles et RPLS
res_3$diff_pourc_ann_rpls = res_3$diff_ann_rpls / res_3$rpls
summary(res_3$diff_pourc_ann_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.00000 0.03957 0.16538 0.43262 0.46055 36.66667
quantile(res_3$diff_pourc_ann_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50%
## -1.00000000 -0.03229865 0.02014575 0.06276627 0.10764313 0.16538462
## 60% 70% 80% 90% 100%
## 0.24115514 0.36535948 0.56253771 0.94761905 36.66666667
boxplot(res_3$diff_pourc_ann_rpls,
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink')
boxplot(res_3$diff_pourc_ann_rpls[res_3$diff_pourc_ann_rpls<10],
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieure à 10",
col = 'lightpink')
hist(res_3$diff_pourc_ann_rpls[res_3$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieure à 10")
# pour les différences entre les données SRU triennales et RPLS
res_3_tri$diff_pourc_tri_rpls = res_3_tri$diff_tri_rpls / res_3_tri$rpls
summary(res_3_tri$diff_pourc_tri_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.4681 0.5042 0.8796 1.5352 1.5448 82.0000 11
quantile(res_3_tri$diff_pourc_tri_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60%
## -0.4680851 0.2584196 0.4227444 0.5691094 0.7166704 0.8796296 1.0575360
## 70% 80% 90% 100%
## 1.3310924 1.7472133 2.7862422 82.0000000
boxplot(res_3_tri$diff_pourc_tri_rpls, col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS")
boxplot(res_3_tri$diff_pourc_tri_rpls[res_3_tri$diff_pourc_tri_rpls<10],
col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
hist(res_3_tri$diff_pourc_tri_rpls[res_3_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
# pour les différences entre les données SRU annuelles et RPLS
res_4$diff_pourc_ann_rpls = res_4$diff_ann_rpls / res_4$rpls
summary(res_4$diff_pourc_ann_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.00000 0.03957 0.16538 0.43262 0.46055 36.66667
quantile(res_4$diff_pourc_ann_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50%
## -1.00000000 -0.03229865 0.02014575 0.06276627 0.10764313 0.16538462
## 60% 70% 80% 90% 100%
## 0.24115514 0.36535948 0.56253771 0.94761905 36.66666667
boxplot(res_4$diff_pourc_ann_rpls,
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink')
boxplot(res_4$diff_pourc_ann_rpls[res_4$diff_pourc_ann_rpls<10],
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieure à 10",
col = 'lightpink')
hist(res_4$diff_pourc_ann_rpls[res_4$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 1 valeur supérieur à 10")
# pour les différences entre les données SRU triennales et RPLS
res_4_tri$diff_pourc_tri_rpls = res_4_tri$diff_tri_rpls / res_4_tri$rpls
summary(res_4_tri$diff_pourc_tri_rpls)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -0.4681 0.5042 0.8796 1.5352 1.5448 82.0000 11
quantile(res_4_tri$diff_pourc_tri_rpls, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60%
## -0.4680851 0.2584196 0.4227444 0.5691094 0.7166704 0.8796296 1.0575360
## 70% 80% 90% 100%
## 1.3310924 1.7472133 2.7862422 82.0000000
boxplot(res_4_tri$diff_pourc_tri_rpls, col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS")
boxplot(res_4_tri$diff_pourc_tri_rpls[res_4_tri$diff_pourc_tri_rpls<10],
col = 'lightblue',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
hist(res_4_tri$diff_pourc_tri_rpls[res_4_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeur supérieures à 10")
boxplot(res_1$diff_pourc_ann_rpls,
res_2$diff_pourc_ann_rpls,
res_3$diff_pourc_ann_rpls,
res_4$diff_pourc_ann_rpls,
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink', names = c(1, 2, 3, 4), horizontal = TRUE)
Il y a une valeur égale à 36,67, qui correspond à la commune 06011.
boxplot(res_1$diff_pourc_ann_rpls[res_1$diff_pourc_ann_rpls<10],
res_2$diff_pourc_ann_rpls[res_2$diff_pourc_ann_rpls<10],
res_3$diff_pourc_ann_rpls[res_3$diff_pourc_ann_rpls<10],
res_4$diff_pourc_ann_rpls[res_4$diff_pourc_ann_rpls<10],
main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS",
col = 'lightpink', names = c(1, 2, 3, 4), horizontal = TRUE)
par(mfrow = c(2, 2), oma = c(2, 2, 2, 2), mar = c(4, 1, 1, 1))
hist(res_1$diff_pourc_ann_rpls[res_1$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "version 1", cex.lab = 0.8, cex.main = 1)
hist(res_2$diff_pourc_ann_rpls[res_2$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "version 2", cex.lab = 0.8, cex.main = 1)
hist(res_3$diff_pourc_ann_rpls[res_3$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "version 3", cex.lab = 0.8, cex.main = 1)
hist(res_4$diff_pourc_ann_rpls[res_4$diff_pourc_ann_rpls<10], breaks = 25,
col = 'lightpink', xlab = 'différences/rpls',
main = "version 4", cex.lab = 0.8, cex.main = 1)
title(main = "Différences des données annuelles SRU et RPLS sur les LLS",
sub = "sur le nombre de constructions RPLS", outer = TRUE, line = 1)
boxplot(res_1_tri$diff_pourc_tri_rpls,
res_2_tri$diff_pourc_tri_rpls,
res_3_tri$diff_pourc_tri_rpls,
res_4_tri$diff_pourc_tri_rpls, col = 'lightblue', names = c(1, 2, 3, 4),
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS")
boxplot(res_1_tri$diff_pourc_tri_rpls[res_1_tri$diff_pourc_tri_rpls<10],
res_2_tri$diff_pourc_tri_rpls[res_2_tri$diff_pourc_tri_rpls<10],
res_3_tri$diff_pourc_tri_rpls[res_3_tri$diff_pourc_tri_rpls<10],
res_4_tri$diff_pourc_tri_rpls[res_4_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', names = c(1, 2, 3, 4),
main = "Différences des données triennales SRU et RPLS sur les LLS",
sub = "sur le nombre de LLS construits selon RPLS sans 6 valeurs supérieures à 10")
par(mfrow = c(2, 2), oma = c(2, 2, 2, 2), mar = c(4, 1, 1, 1))
hist(res_1_tri$diff_pourc_tri_rpls[res_1_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = 'version 1', cex.lab = 0.8, cex.main = 1)
hist(res_2_tri$diff_pourc_tri_rpls[res_2_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = 'version 2', cex.lab = 0.8, cex.main = 1)
hist(res_3_tri$diff_pourc_tri_rpls[res_3_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = 'version 3', cex.lab = 0.8, cex.main = 1)
hist(res_4_tri$diff_pourc_tri_rpls[res_4_tri$diff_pourc_tri_rpls<10],
col = 'lightblue', breaks = 30, xlab = 'différences/rpls',
main = 'version 4', cex.lab = 0.8, cex.main = 1)
title(main = "Différences des données triennales SRU et RPLS",
sub = "sur les LLS construits selon RPLS sans 6 valeurs supérieures à 10",
outer = TRUE, line = 1)
# View(res_1[, c(1, ncol(communes_soumises_06_21) - 1, ncol(communes_soumises_06_21), ncol(res_1) - 2, ncol(res_1) - 1, ncol(res_1))], title = "version 1")
# View(res_1[, c(1, ncol(communes_soumises_06_21) - 1, ncol(communes_soumises_06_21), ncol(res_1) - 4, ncol(res_1) - 1, ncol(res_1))], title = "version 1")
# View(res_2[, c(1, ncol(communes_soumises_06_21) - 1, ncol(communes_soumises_06_21), ncol(res_1) - 4, ncol(res_1) - 1, ncol(res_1))], title = "version 2")
# View(res_3[, c(1, ncol(communes_soumises_06_21) - 1, ncol(communes_soumises_06_21), ncol(res_1) - 4, ncol(res_1) - 1, ncol(res_1))], title = "version 3")
# View(res_4[, c(1, ncol(communes_soumises_06_21) - 1, ncol(communes_soumises_06_21), ncol(res_1) - 4, ncol(res_1) - 1, ncol(res_1))], title = "version 4")
# les communes sortant des bilans annuels entre ceux de 2004 et 2005
# print("2004 sortantes")
com_sort_04_05 = sqldf("SELECT code_commune FROM co_so_04 EXCEPT SELECT code_commune FROM co_so_05")
# print("2005 sortantes")
# les communes sortant des bilans annuels entre ceux de 2005 et 2006
com_sort_05_06 = sqldf("SELECT code_commune FROM co_so_05 EXCEPT SELECT code_commune FROM co_so_06")
# print("2006 sortantes")
# les communes sortant des bilans annuels entre ceux de 2006 et 2007
com_sort_06_07 = sqldf("SELECT code_commune FROM co_so_06 EXCEPT SELECT code_commune FROM co_so_07")
# print("2007 sortantes")
# les communes sortant des bilans annuels entre ceux de 2007 et 2008
com_sort_07_08 = sqldf("SELECT code_commune FROM co_so_07 EXCEPT SELECT code_commune FROM co_so_08")
# print("2008 sortantes")
# les communes sortant des bilans annuels entre ceux de 2008 et 2009
com_sort_08_09 = sqldf("SELECT code_commune FROM co_so_08 EXCEPT SELECT code_commune FROM co_so_09")
# print("2009 sortantes")
# les communes sortant des bilans annuels entre ceux de 2009 et 2010
com_sort_09_10 = sqldf("SELECT code_commune FROM co_so_09 EXCEPT SELECT code_commune FROM co_so_10")
# print("2010 sortantes")
# les communes sortant des bilans annuels entre ceux de 2010 et 2011
com_sort_10_11 = sqldf("SELECT code_commune FROM co_so_10 EXCEPT SELECT code_commune FROM co_so_11")
# print("2011 sortantes")
# les communes sortant des bilans annuels entre ceux de 2011 et 2012
com_sort_11_12 = sqldf("SELECT code_commune FROM co_so_11 EXCEPT SELECT code_commune FROM co_so_12")
# print("2012 sortantes")
# les communes sortant des bilans annuels entre ceux de 2012 et 2013
com_sort_12_13 = sqldf("SELECT code_commune FROM co_so_12 EXCEPT SELECT code_commune FROM co_so_13")
# print("2013 sortantes")
# les communes sortant des bilans annuels entre ceux de 2013 et 2014
com_sort_13_14 = sqldf("SELECT code_commune FROM co_so_13 EXCEPT SELECT code_commune FROM co_so_14")
# print("2014 sortantes")
# les communes sortant des bilans annuels entre ceux de 2014 et 2015
com_sort_14_15 = sqldf("SELECT code_commune FROM co_so_14 EXCEPT SELECT code_commune FROM co_so_15")
# print("2015 sortantes")
# les communes sortant des bilans annuels entre ceux de 2015 et 2016
com_sort_15_16 = sqldf("SELECT code_commune FROM co_so_15 EXCEPT SELECT code_commune FROM co_so_16")
# print("2016 sortantes")
# les communes sortant des bilans annuels entre ceux de 2016 et 2017
com_sort_16_17 = sqldf("SELECT code_commune FROM co_so_16 EXCEPT SELECT code_commune FROM co_so_17")
# print("2017 sortantes")
# les communes sortant des bilans annuels entre ceux de 2017 et 2018
com_sort_17_18 = sqldf("SELECT code_commune FROM co_so_17 EXCEPT SELECT code_commune FROM co_so_18")
# print("2018 sortantes")
# les communes sortant des bilans annuels entre ceux de 2018 et 2019
com_sort_18_19 = sqldf("SELECT code_commune FROM co_so_18 EXCEPT SELECT code_commune FROM co_so_19")
# print("2019 sortantes")
# les communes sortant des bilans annuels entre ceux de 2019 et 2020
com_sort_19_20 = sqldf("SELECT code_commune FROM co_so_19 EXCEPT SELECT code_commune FROM co_so_20")
# print("2020 sortantes")
# les communes sortant des bilans annuels entre ceux de 2020 et 2021
com_sort_20_21 = sqldf("SELECT code_commune FROM co_so_20 EXCEPT SELECT code_commune FROM co_so_21")
# les communes entrant dans les bilans annuels entre ceux de 2004 et 2005
# print("2005 entrantes")
com_entr_04_05 = sqldf("SELECT code_commune FROM co_so_05 EXCEPT SELECT code_commune FROM co_so_04")
# print("2006 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2005 et 2006
com_entr_05_06 = sqldf("SELECT code_commune FROM co_so_06 EXCEPT SELECT code_commune FROM co_so_05")
# print("2007 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2006 et 2007
com_entr_06_07 = sqldf("SELECT code_commune FROM co_so_07 EXCEPT SELECT code_commune FROM co_so_06")
# print("2008 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2007 et 2008
com_entr_07_08 = sqldf("SELECT code_commune FROM co_so_08 EXCEPT SELECT code_commune FROM co_so_07")
# print("2009 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2008 et 2009
com_entr_08_09 = sqldf("SELECT code_commune FROM co_so_09 EXCEPT SELECT code_commune FROM co_so_08")
# print("2010 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2009 et 2010
com_entr_09_10 = sqldf("SELECT code_commune FROM co_so_10 EXCEPT SELECT code_commune FROM co_so_09")
# print("2011 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2010 et 2011
com_entr_10_11 = sqldf("SELECT code_commune FROM co_so_11 EXCEPT SELECT code_commune FROM co_so_10")
# print("2012 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2011 et 2012
com_entr_11_12 = sqldf("SELECT code_commune FROM co_so_12 EXCEPT SELECT code_commune FROM co_so_11")
# print("2013 entrantes")
# les communes entrant des bilans annuels entre ceux de 2012 et 2013
com_entr_12_13 = sqldf("SELECT code_commune FROM co_so_13 EXCEPT SELECT code_commune FROM co_so_12")
# print("2014 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2013 et 2014
com_entr_13_14 = sqldf("SELECT code_commune FROM co_so_14 EXCEPT SELECT code_commune FROM co_so_13")
# print("2015 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2014 et 2015
com_entr_14_15 = sqldf("SELECT code_commune FROM co_so_15 EXCEPT SELECT code_commune FROM co_so_14")
# print("2016 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2015 et 2016
com_entr_15_16 = sqldf("SELECT code_commune FROM co_so_16 EXCEPT SELECT code_commune FROM co_so_15")
# print("2017 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2016 et 2017
com_entr_16_17 = sqldf("SELECT code_commune FROM co_so_17 EXCEPT SELECT code_commune FROM co_so_16")
# print("2018 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2017 et 2018
com_entr_17_18 = sqldf("SELECT code_commune FROM co_so_18 EXCEPT SELECT code_commune FROM co_so_17")
# print("2019 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2018 et 2019
com_entr_18_19 = sqldf("SELECT code_commune FROM co_so_19 EXCEPT SELECT code_commune FROM co_so_18")
# print("2020 entrantes")
# les communes entrant dans les bilans annuels entre ceux de 2019 et 2020
com_entr_19_20 = sqldf("SELECT code_commune FROM co_so_20 EXCEPT SELECT code_commune FROM co_so_19")
# print("2021 entrantes")
# les communes entrant dans les des bilans annuels entre ceux de 2020 et 2021
com_entr_20_21 = sqldf("SELECT code_commune FROM co_so_21 EXCEPT SELECT code_commune FROM co_so_20")
# création d'un fichier avec des 0 et 1 en fonction de l'entrée des communes dans les bilans et des sorties
entrees_sorties_communes = c()
entrees_sorties_communes$code_commune = co_so_ann$code_commune
entrees_sorties_communes$entree_06 = co_so_ann$code_commune %in% co_so_06$code_commune
entrees_sorties_communes$entree_07 = co_so_ann$code_commune %in% com_entr_06_07$code_commune
entrees_sorties_communes$entree_08 = co_so_ann$code_commune %in% com_entr_07_08$code_commune
entrees_sorties_communes$entree_09 = co_so_ann$code_commune %in% com_entr_08_09$code_commune
entrees_sorties_communes$entree_10 = co_so_ann$code_commune %in% com_entr_09_10$code_commune
entrees_sorties_communes$entree_11 = co_so_ann$code_commune %in% com_entr_10_11$code_commune
entrees_sorties_communes$entree_12 = co_so_ann$code_commune %in% com_entr_11_12$code_commune
entrees_sorties_communes$entree_13 = co_so_ann$code_commune %in% com_entr_12_13$code_commune
entrees_sorties_communes$entree_14 = co_so_ann$code_commune %in% com_entr_13_14$code_commune
entrees_sorties_communes$entree_15 = co_so_ann$code_commune %in% com_entr_14_15$code_commune
entrees_sorties_communes$entree_16 = co_so_ann$code_commune %in% com_entr_15_16$code_commune
entrees_sorties_communes$entree_17 = co_so_ann$code_commune %in% com_entr_16_17$code_commune
entrees_sorties_communes$entree_18 = co_so_ann$code_commune %in% com_entr_17_18$code_commune
entrees_sorties_communes$entree_19 = co_so_ann$code_commune %in% com_entr_18_19$code_commune
entrees_sorties_communes$entree_20 = co_so_ann$code_commune %in% com_entr_19_20$code_commune
entrees_sorties_communes$entree_21 = co_so_ann$code_commune %in% com_entr_20_21$code_commune
entrees_sorties_communes$sortie_04 = co_so_ann$code_commune %in% com_sort_04_05$code_commune
entrees_sorties_communes$sortie_05 = co_so_ann$code_commune %in% com_sort_05_06$code_commune
entrees_sorties_communes$sortie_06 = co_so_ann$code_commune %in% com_sort_06_07$code_commune
entrees_sorties_communes$sortie_07 = co_so_ann$code_commune %in% com_sort_07_08$code_commune
entrees_sorties_communes$sortie_08 = co_so_ann$code_commune %in% com_sort_08_09$code_commune
entrees_sorties_communes$sortie_09 = co_so_ann$code_commune %in% com_sort_09_10$code_commune
entrees_sorties_communes$sortie_10 = co_so_ann$code_commune %in% com_sort_10_11$code_commune
entrees_sorties_communes$sortie_11 = co_so_ann$code_commune %in% com_sort_11_12$code_commune
entrees_sorties_communes$sortie_12 = co_so_ann$code_commune %in% com_sort_12_13$code_commune
entrees_sorties_communes$sortie_13 = co_so_ann$code_commune %in% com_sort_13_14$code_commune
entrees_sorties_communes$sortie_14 = co_so_ann$code_commune %in% com_sort_14_15$code_commune
entrees_sorties_communes$sortie_15 = co_so_ann$code_commune %in% com_sort_15_16$code_commune
entrees_sorties_communes$sortie_16 = co_so_ann$code_commune %in% com_sort_16_17$code_commune
entrees_sorties_communes$sortie_17 = co_so_ann$code_commune %in% com_sort_17_18$code_commune
entrees_sorties_communes$sortie_18 = co_so_ann$code_commune %in% com_sort_18_19$code_commune
entrees_sorties_communes$sortie_19 = co_so_ann$code_commune %in% com_sort_19_20$code_commune
entrees_sorties_communes$sortie_20 = co_so_ann$code_commune %in% com_sort_20_21$code_commune
entrees_sorties_communes = as.data.frame(entrees_sorties_communes)
# création d'un fichier avec des 0 et des 1 en fonction des présences des communes
# Une colonne par année
# Une ligne par commune
presence_communes = c()
presence_communes$code_commune = co_so_ann$code_commune
presence_communes$pres_06 = co_so_ann$code_commune %in% co_so_06$code_commune
presence_communes$pres_07 = co_so_ann$code_commune %in% co_so_07$code_commune
presence_communes$pres_08 = co_so_ann$code_commune %in% co_so_08$code_commune
presence_communes$pres_09 = co_so_ann$code_commune %in% co_so_09$code_commune
presence_communes$pres_10 = co_so_ann$code_commune %in% co_so_10$code_commune
presence_communes$pres_11 = co_so_ann$code_commune %in% co_so_11$code_commune
presence_communes$pres_12 = co_so_ann$code_commune %in% co_so_12$code_commune
presence_communes$pres_13 = co_so_ann$code_commune %in% co_so_13$code_commune
presence_communes$pres_14 = co_so_ann$code_commune %in% co_so_14$code_commune
presence_communes$pres_15 = co_so_ann$code_commune %in% co_so_15$code_commune
presence_communes$pres_16 = co_so_ann$code_commune %in% co_so_16$code_commune
presence_communes$pres_17 = co_so_ann$code_commune %in% co_so_17$code_commune
presence_communes$pres_18 = co_so_ann$code_commune %in% co_so_18$code_commune
presence_communes$pres_19 = co_so_ann$code_commune %in% co_so_19$code_commune
presence_communes$pres_20 = co_so_ann$code_commune %in% co_so_20$code_commune
presence_communes$pres_21 = co_so_ann$code_commune %in% co_so_21$code_commune
presence_communes = as.data.frame(presence_communes)
# une colonne pour le nombre d'année de présence dans les bilans annuels
presence_communes$nb_annee =
presence_communes$pres_06 +
presence_communes$pres_07 + presence_communes$pres_08 + presence_communes$pres_09 +
presence_communes$pres_10 + presence_communes$pres_11 + presence_communes$pres_12 +
presence_communes$pres_13 + presence_communes$pres_15 + presence_communes$pres_16 +
presence_communes$pres_14 + presence_communes$pres_17 + presence_communes$pres_18 +
presence_communes$pres_19 + presence_communes$pres_20 + presence_communes$pres_21
# la première année de présence de la commune
for (i in 1:length(co_so_ann$code_commune)){
presence_communes$premiere_annee[i] = 2021
if (presence_communes$pres_20[i] == 1){presence_communes$premiere_annee[i] = 2020}
if (presence_communes$pres_19[i] == 1){presence_communes$premiere_annee[i] = 2019}
if (presence_communes$pres_18[i] == 1){presence_communes$premiere_annee[i] = 2018}
if (presence_communes$pres_17[i] == 1){presence_communes$premiere_annee[i] = 2017}
if (presence_communes$pres_16[i] == 1){presence_communes$premiere_annee[i] = 2016}
if (presence_communes$pres_15[i] == 1){presence_communes$premiere_annee[i] = 2015}
if (presence_communes$pres_14[i] == 1){presence_communes$premiere_annee[i] = 2014}
if (presence_communes$pres_13[i] == 1){presence_communes$premiere_annee[i] = 2013}
if (presence_communes$pres_12[i] == 1){presence_communes$premiere_annee[i] = 2012}
if (presence_communes$pres_11[i] == 1){presence_communes$premiere_annee[i] = 2011}
if (presence_communes$pres_10[i] == 1){presence_communes$premiere_annee[i] = 2010}
if (presence_communes$pres_09[i] == 1){presence_communes$premiere_annee[i] = 2009}
if (presence_communes$pres_08[i] == 1){presence_communes$premiere_annee[i] = 2008}
if (presence_communes$pres_07[i] == 1){presence_communes$premiere_annee[i] = 2007}
if (presence_communes$pres_06[i] == 1){presence_communes$premiere_annee[i] = 2006}
}
table(presence_communes$premiere_annee, presence_communes$nb_annee)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## 2006 0 4 11 4 8 8 10 22 11 10 12 12 31 22 27 43 509
## 2007 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0
## 2008 0 3 3 1 6 3 6 4 6 9 33 4 16 14 112 0 0
## 2009 0 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0
## 2010 0 3 0 1 4 9 3 3 13 4 6 5 32 0 0 0 0
## 2011 0 1 0 0 0 0 1 2 0 5 1 13 0 0 0 0 0
## 2012 0 0 1 0 3 0 2 0 3 2 11 0 0 0 0 0 0
## 2013 0 6 1 2 2 8 2 8 6 48 0 0 0 0 0 0 0
## 2014 0 4 2 6 18 12 8 8 54 0 0 0 0 0 0 0 0
## 2015 0 1 4 16 0 5 2 19 0 0 0 0 0 0 0 0 0
## 2016 0 2 12 0 2 2 7 0 0 0 0 0 0 0 0 0 0
## 2017 0 14 0 7 1 8 0 0 0 0 0 0 0 0 0 0 0
## 2018 0 0 8 1 23 0 0 0 0 0 0 0 0 0 0 0 0
## 2019 0 6 1 12 0 0 0 0 0 0 0 0 0 0 0 0 0
## 2020 0 1 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 2021 8 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Il y a 900 communes sur la diagonale, c’est-à-dire qu’il y a 900 communes lorsqu’elles commencent à être soumises à la loi SRU le restent jusqu’au dernier bilan annuel : celui de 2021. On va s’interresser aux communes qui ne sont pas dans ce cas afin de trouver quelles sont les périodes où elles sont soumises en continu à la loi SRU. Pour les communes soumises seulement un an à la loi SRU, la première année de soumission à la loi correspond à la période complète de soumission de ces communes.
# On garde une liste de communes réduites
communes_red = entrees_sorties_communes
communes_red$nb_annee = presence_communes$nb_annee
communes_red$premiere_annee = presence_communes$premiere_annee
communes_red$pres_06 = presence_communes$pres_06
communes_red = as.data.frame(communes_red)
communes_red = communes_red[communes_red$nb_annee != 0,] # entre 2006 et 2019
# on enlève les communes de la diagonale
communes_red = communes_red[(communes_red$nb_annee + communes_red$premiere_annee) != 2022,]
# on enlève les communes soumises une seule année
communes_red = communes_red[communes_red$nb_annee != 1,]
Il reste 555 communes.
# On cherche les nombres d'entrées et de sorties des communes qu'il nous reste
communes_red$nb_entrees = communes_red$pres_06 + communes_red$entree_07 +
communes_red$entree_08 + communes_red$entree_09 + communes_red$entree_10 +
communes_red$entree_11 + communes_red$entree_12 + communes_red$entree_13 +
communes_red$entree_14 + communes_red$entree_15 + communes_red$entree_16 +
communes_red$entree_17 + communes_red$entree_18 + communes_red$entree_19 +
communes_red$entree_20
print("Nombre d'entrées :")
## [1] "Nombre d'entrées :"
table(communes_red$nb_entrees)
##
## 1 2 3 4
## 273 250 27 5
communes_red$nb_sorties = communes_red$sortie_06 + communes_red$sortie_07 +
communes_red$sortie_08 + communes_red$sortie_09 + communes_red$sortie_10 +
communes_red$sortie_11 + communes_red$sortie_12 + communes_red$sortie_13 +
communes_red$sortie_14 + communes_red$sortie_15 + communes_red$sortie_16 +
communes_red$sortie_17 + communes_red$sortie_18 + communes_red$sortie_19 +
communes_red$sortie_20
print("Nombre de sorties")
## [1] "Nombre de sorties"
table(communes_red$nb_sorties)
##
## 1 2 3 4
## 452 84 17 2
table(communes_red$nb_entrees, communes_red$nb_sorties)
##
## 1 2 3 4
## 1 273 0 0 0
## 2 179 71 0 0
## 3 0 13 14 0
## 4 0 0 3 2
Il y a 273 communes non soumises à la loi SRU en 2021 qui sont soumises à la loi SRU sans discontinuité et plus d’un an.
# répartition des communes ayant une période de soumission selon
# leur première année de soumission
# le nombre d'année de soumission
table(communes_red$premiere_annee[communes_red$nb_entrees == 1])
##
## 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
## 81 1 51 2 30 2 4 16 36 23 13 4 9 1
table(communes_red$nb_annee[communes_red$nb_entrees == 1])
##
## 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 37 29 29 33 15 21 20 11 35 5 21 3 9 5
table(communes_red$premiere_annee[communes_red$nb_entrees == 1], communes_red$nb_annee[communes_red$nb_entrees == 1])
##
## 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 2006 7 2 7 6 5 13 2 3 1 3 15 3 9 5
## 2007 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## 2008 1 0 1 1 2 0 2 6 31 2 5 0 0 0
## 2009 0 0 0 0 0 0 0 1 0 0 1 0 0 0
## 2010 0 1 2 7 1 2 13 1 3 0 0 0 0 0
## 2011 0 0 0 0 0 2 0 0 0 0 0 0 0 0
## 2012 1 0 0 0 2 0 1 0 0 0 0 0 0 0
## 2013 1 1 1 8 1 2 2 0 0 0 0 0 0 0
## 2014 1 4 17 10 2 2 0 0 0 0 0 0 0 0
## 2015 4 16 0 1 2 0 0 0 0 0 0 0 0 0
## 2016 12 0 1 0 0 0 0 0 0 0 0 0 0 0
## 2017 0 4 0 0 0 0 0 0 0 0 0 0 0 0
## 2018 8 1 0 0 0 0 0 0 0 0 0 0 0 0
## 2019 1 0 0 0 0 0 0 0 0 0 0 0 0 0
# Les 32 communes avec au moins trois entrées dans les bilans annuels SRU c'est-à-dire au moins 3 périodes de soumission à la loi SRU
presence_communes[presence_communes$code_commune %in% communes_red$code_commune[communes_red$nb_entrees >= 3],]
## code_commune pres_06 pres_07 pres_08 pres_09 pres_10 pres_11 pres_12
## 158 14738 TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## 211 22215 FALSE FALSE TRUE TRUE TRUE TRUE TRUE
## 507 39526 FALSE FALSE FALSE FALSE TRUE TRUE TRUE
## 508 40088 FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## 522 42234 FALSE FALSE TRUE FALSE TRUE TRUE TRUE
## 683 57591 TRUE FALSE TRUE FALSE TRUE TRUE TRUE
## 694 59107 FALSE FALSE TRUE TRUE FALSE FALSE FALSE
## 695 59143 TRUE TRUE TRUE TRUE FALSE TRUE FALSE
## 698 59202 TRUE TRUE TRUE TRUE FALSE TRUE FALSE
## 702 59239 FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## 714 59317 TRUE TRUE TRUE TRUE FALSE TRUE FALSE
## 739 59527 TRUE FALSE FALSE TRUE FALSE FALSE FALSE
## 761 62035 TRUE FALSE FALSE FALSE TRUE FALSE TRUE
## 762 62126 TRUE FALSE FALSE FALSE TRUE FALSE TRUE
## 768 62276 TRUE FALSE FALSE FALSE TRUE FALSE TRUE
## 775 62604 FALSE FALSE TRUE TRUE TRUE FALSE TRUE
## 778 62755 TRUE TRUE TRUE TRUE FALSE FALSE FALSE
## 782 62861 FALSE FALSE TRUE FALSE TRUE FALSE TRUE
## 783 62863 TRUE FALSE FALSE FALSE TRUE FALSE TRUE
## 815 64284 TRUE TRUE TRUE FALSE TRUE TRUE FALSE
## 860 67267 TRUE TRUE TRUE TRUE TRUE FALSE TRUE
## 948 71118 TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## 967 73213 FALSE FALSE FALSE FALSE TRUE FALSE TRUE
## 1031 77143 TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 1038 77243 FALSE TRUE TRUE FALSE TRUE TRUE TRUE
## 1058 77407 TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## 1156 81065 FALSE FALSE FALSE FALSE TRUE TRUE FALSE
## 1277 91179 TRUE FALSE FALSE TRUE TRUE TRUE TRUE
## 1334 92022 TRUE FALSE FALSE FALSE TRUE TRUE FALSE
## 1435 97113 TRUE FALSE FALSE FALSE TRUE TRUE TRUE
## 1436 97115 TRUE FALSE FALSE FALSE TRUE TRUE TRUE
## 1474 97307 FALSE FALSE TRUE FALSE FALSE FALSE TRUE
## pres_13 pres_14 pres_15 pres_16 pres_17 pres_18 pres_19 pres_20 pres_21
## 158 FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
## 211 TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE
## 507 TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
## 508 FALSE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
## 522 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
## 683 FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## 694 TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE
## 695 TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## 698 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 702 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
## 714 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 739 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 761 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 762 TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## 768 TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
## 775 TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE
## 778 FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE
## 782 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
## 783 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 815 FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## 860 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 948 TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE
## 967 FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
## 1031 TRUE TRUE FALSE FALSE FALSE TRUE FALSE TRUE TRUE
## 1038 FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 1058 FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
## 1156 TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## 1277 FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## 1334 FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
## 1435 TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
## 1436 TRUE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
## 1474 FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
## nb_annee premiere_annee
## 158 8 2006
## 211 11 2008
## 507 6 2010
## 508 4 2008
## 522 5 2008
## 683 11 2006
## 694 6 2008
## 695 10 2006
## 698 14 2006
## 702 4 2008
## 714 14 2006
## 739 10 2006
## 761 12 2006
## 762 8 2006
## 768 8 2006
## 775 10 2008
## 778 8 2006
## 782 6 2008
## 783 12 2006
## 815 6 2006
## 860 14 2006
## 948 10 2006
## 967 4 2010
## 1031 12 2006
## 1038 13 2007
## 1058 13 2006
## 1156 4 2010
## 1277 12 2006
## 1334 9 2006
## 1435 11 2006
## 1436 7 2006
## 1474 4 2008
Les 179 communes avec 2 entrées et une sortie : elles sont soumises pendant deux périodes et la deuxième dure jusqu’en 2021.
# on crée une base avec que ces données
pres_2_entr_1_sort = presence_communes[presence_communes$code_commune %in% communes_red$code_commune[communes_red$nb_entrees == 2 & communes_red$nb_sorties == 1],]
# On va chercher la date de deuxième entrée
temp = rep(NA, length(pres_2_entr_1_sort$code_commune))
temp2 = rep(NA, length(pres_2_entr_1_sort$code_commune))
for (i in 1:length(pres_2_entr_1_sort$code_commune)){
# Pour chacune des 179 communes, on cherche la dernière année d'absence (pres == 0)
temp[i] = 2008 # 2008 est la première année où il peut y avoir une deuxième entrée
if (pres_2_entr_1_sort$pres_08[i] == 0){temp[i] = 2009}
if (pres_2_entr_1_sort$pres_09[i] == 0){temp[i] = 2010}
if (pres_2_entr_1_sort$pres_10[i] == 0){temp[i] = 2011}
if (pres_2_entr_1_sort$pres_11[i] == 0){temp[i] = 2012}
if (pres_2_entr_1_sort$pres_12[i] == 0){temp[i] = 2013}
if (pres_2_entr_1_sort$pres_13[i] == 0){temp[i] = 2014}
if (pres_2_entr_1_sort$pres_14[i] == 0){temp[i] = 2015}
if (pres_2_entr_1_sort$pres_15[i] == 0){temp[i] = 2016}
if (pres_2_entr_1_sort$pres_16[i] == 0){temp[i] = 2017}
if (pres_2_entr_1_sort$pres_17[i] == 0){temp[i] = 2018}
if (pres_2_entr_1_sort$pres_18[i] == 0){temp[i] = 2019}
if (pres_2_entr_1_sort$pres_19[i] == 0){temp[i] = 2020}
if (pres_2_entr_1_sort$pres_20[i] == 0){temp[i] = 2021}
# date de sortie (première année non soumise)
temp2[i] <- pres_2_entr_1_sort$nb_annee[i] - 2022 + temp[i] + pres_2_entr_1_sort$premiere_annee[i]
}
pres_2_entr_1_sort$entree2 = temp
tab = c()
tab['2008'] <- 0 ; tab <- c(tab, table(temp)[1:2]) ; tab['2011'] <- 0
tab <- c(tab, table(temp)[3:9]) ; tab['2019'] <- 0
tab <- c(tab, table(temp)['2020']) ; tab['2021'] <- 0
pres_2_entr_1_sort$sortie = temp2
couleurs = c('white', 'oldlace', 'mistyrose1', 'white', 'pink', 'lightpink2',
'palevioletred', 'palevioletred4', 'plum4', 'purple4', 'navy',
'white', 'lightslateblue', 'white')
barplot(tab, col = couleurs, xlab = "années des bilans annuels SRU",
ylab = "éffectifs",
main = "Diagramme en barres des dates de 2ème entrée dans les bilans SRU")
couleurs = c('oldlace', 'mistyrose1', 'pink', 'lightpink2', 'palevioletred',
'palevioletred4', 'plum4', 'purple4', 'navy', 'lightslateblue')
barplot(table(temp, pres_2_entr_1_sort$premiere_annee), beside = FALSE,
col = couleurs, xlab = 'Période 1 : première année')
legend('topright', legend = names(table(temp)), fil = couleurs, ncol = 2,
title = "Période 2 : première année")
title("Premières années de soumission à la loi SRU des deux périodes")
barplot(table(temp, pres_2_entr_1_sort$premiere_annee)[,-1], beside = FALSE,
col = couleurs, xlab = 'Période 1 : première année')
legend('topright', legend = names(table(temp)), fil = couleurs, ncol = 2,
title = "Période 2 : première année")
title("Premières années de soumission à la loi SRU des deux périodes")
barplot(table(pres_2_entr_1_sort$premiere_annee, temp)['2006',], beside = FALSE,
col = couleurs, xlab = 'Période 1 : première année')
title("Première année de soumission à la loi SRU de la période 2 pour les communes soumises en 2006")
table(temp[pres_2_entr_1_sort$premiere_annee == 2006], temp2[pres_2_entr_1_sort$premiere_annee == 2006])
##
## 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
## 2009 1 0 0 0 0 0 0 0 0 0 0 0 0
## 2010 1 0 0 0 0 0 0 0 0 0 0 0 0
## 2013 0 1 0 0 0 1 0 0 0 0 0 0 0
## 2014 1 3 2 5 3 3 3 0 0 0 0 0 0
## 2015 0 0 1 0 0 0 0 0 0 0 0 0 0
## 2016 0 2 0 2 1 3 7 0 27 0 0 0 0
## 2017 0 0 0 2 0 0 0 0 1 1 0 0 0
## 2018 0 0 1 0 1 0 0 0 5 0 4 0 0
## 2020 0 0 0 0 0 0 0 1 0 0 0 8 2
a = sqldf("SELECT premiere_annee, sortie, entree2, count(code_commune)
FROM pres_2_entr_1_sort
GROUP BY premiere_annee, sortie, entree2")
print(a)
## premiere_annee sortie entree2 count(code_commune)
## 1 2006 2007 2009 1
## 2 2006 2007 2010 1
## 3 2006 2007 2014 1
## 4 2006 2008 2013 1
## 5 2006 2008 2014 3
## 6 2006 2008 2016 2
## 7 2006 2009 2014 2
## 8 2006 2009 2015 1
## 9 2006 2009 2018 1
## 10 2006 2010 2014 5
## 11 2006 2010 2016 2
## 12 2006 2010 2017 2
## 13 2006 2011 2014 3
## 14 2006 2011 2016 1
## 15 2006 2011 2018 1
## 16 2006 2012 2013 1
## 17 2006 2012 2014 3
## 18 2006 2012 2016 3
## 19 2006 2013 2014 3
## 20 2006 2013 2016 7
## 21 2006 2014 2020 1
## 22 2006 2015 2016 27
## 23 2006 2015 2017 1
## 24 2006 2015 2018 5
## 25 2006 2016 2017 1
## 26 2006 2017 2018 4
## 27 2006 2018 2020 8
## 28 2006 2019 2020 2
## 29 2008 2009 2010 6
## 30 2008 2009 2014 1
## 31 2008 2009 2016 2
## 32 2008 2010 2018 1
## 33 2008 2011 2012 1
## 34 2008 2013 2014 1
## 35 2008 2015 2016 2
## 36 2008 2016 2017 1
## 37 2008 2017 2018 3
## 38 2008 2018 2020 10
## 39 2009 2015 2016 1
## 40 2010 2011 2012 1
## 41 2010 2011 2014 2
## 42 2010 2013 2014 3
## 43 2010 2014 2020 1
## 44 2010 2015 2016 1
## 45 2010 2015 2018 1
## 46 2010 2018 2020 3
## 47 2011 2013 2015 3
## 48 2011 2017 2018 1
## 49 2011 2018 2020 2
## 50 2012 2013 2014 1
## 51 2012 2014 2016 1
## 52 2012 2016 2017 1
## 53 2012 2018 2020 1
## 54 2013 2014 2015 1
## 55 2013 2014 2016 5
## 56 2013 2015 2017 1
## 57 2013 2016 2017 1
## 58 2013 2017 2018 1
## 59 2013 2019 2020 1
## 60 2014 2015 2016 3
## 61 2014 2015 2017 1
## 62 2014 2015 2018 2
## 63 2014 2015 2020 1
## 64 2014 2016 2017 1
## 65 2014 2017 2018 2
## 66 2014 2018 2020 5
## 67 2015 2018 2020 4
## 68 2016 2017 2018 2
## 69 2017 2018 2020 3
## 70 2017 2019 2020 1
71 communes ont deux périodes de soumission à la loi SRU dans les bilans annuels SRU, avec une deuxième période qui se termine avant le bilan annuel SRU 2021.
# on crée une base avec seulement ces données
pres_2_entr_2_sort = presence_communes[presence_communes$code_commune %in% communes_red$code_commune[communes_red$nb_entrees == 2 & communes_red$nb_sorties == 2],]
# On va chercher la date de deuxième entrée
temp = rep(NA, length(pres_2_entr_2_sort$code_commune)) # dates de deuxième entrée
temp1 = rep(NA, length(pres_2_entr_2_sort$code_commune)) # dates de première sortie
temp2 = rep(NA, length(pres_2_entr_2_sort$code_commune)) # dates de deuxième sortie
for (i in 1:length(pres_2_entr_2_sort$code_commune)){
temp[i] = 2008 # 2008 est la première année où il peut y avoir une deuxième entrée
if (pres_2_entr_2_sort$pres_08[i] - pres_2_entr_2_sort$pres_09[i] == -1){temp[i] = 2009}
if (pres_2_entr_2_sort$pres_09[i] - pres_2_entr_2_sort$pres_10[i] == -1){temp[i] = 2010}
if (pres_2_entr_2_sort$pres_10[i] - pres_2_entr_2_sort$pres_11[i] == -1){temp[i] = 2011}
if (pres_2_entr_2_sort$pres_11[i] - pres_2_entr_2_sort$pres_12[i] == -1){temp[i] = 2012}
if (pres_2_entr_2_sort$pres_12[i] - pres_2_entr_2_sort$pres_13[i] == -1){temp[i] = 2013}
if (pres_2_entr_2_sort$pres_13[i] - pres_2_entr_2_sort$pres_14[i] == -1){temp[i] = 2014}
if (pres_2_entr_2_sort$pres_14[i] - pres_2_entr_2_sort$pres_15[i] == -1){temp[i] = 2015}
if (pres_2_entr_2_sort$pres_15[i] - pres_2_entr_2_sort$pres_16[i] == -1){temp[i] = 2016}
if (pres_2_entr_2_sort$pres_16[i] - pres_2_entr_2_sort$pres_17[i] == -1){temp[i] = 2017}
if (pres_2_entr_2_sort$pres_17[i] - pres_2_entr_2_sort$pres_18[i] == -1){temp[i] = 2018}
if (pres_2_entr_2_sort$pres_18[i] - pres_2_entr_2_sort$pres_19[i] == -1){temp[i] = 2019}
if (pres_2_entr_2_sort$pres_19[i] - pres_2_entr_2_sort$pres_20[i] == -1){temp[i] = 2020}
# Ces communes ne sont pas soumises dans le bilan annuel SRU 2021
# date de première sortie (première année non soumise)
temp1[i] = 2019
if (pres_2_entr_2_sort$pres_17[i] - pres_2_entr_2_sort$pres_18[i] == 1){temp1[i] = 2018}
if (pres_2_entr_2_sort$pres_16[i] - pres_2_entr_2_sort$pres_17[i] == 1){temp1[i] = 2017}
if (pres_2_entr_2_sort$pres_15[i] - pres_2_entr_2_sort$pres_16[i] == 1){temp1[i] = 2016}
if (pres_2_entr_2_sort$pres_14[i] - pres_2_entr_2_sort$pres_15[i] == 1){temp1[i] = 2015}
if (pres_2_entr_2_sort$pres_13[i] - pres_2_entr_2_sort$pres_14[i] == 1){temp1[i] = 2014}
if (pres_2_entr_2_sort$pres_12[i] - pres_2_entr_2_sort$pres_13[i] == 1){temp1[i] = 2013}
if (pres_2_entr_2_sort$pres_11[i] - pres_2_entr_2_sort$pres_12[i] == 1){temp1[i] = 2012}
if (pres_2_entr_2_sort$pres_10[i] - pres_2_entr_2_sort$pres_11[i] == 1){temp1[i] = 2011}
if (pres_2_entr_2_sort$pres_09[i] - pres_2_entr_2_sort$pres_10[i] == 1){temp1[i] = 2010}
if (pres_2_entr_2_sort$pres_08[i] - pres_2_entr_2_sort$pres_09[i] == 1){temp1[i] = 2009}
if (pres_2_entr_2_sort$pres_07[i] - pres_2_entr_2_sort$pres_08[i] == 1){temp1[i] = 2008}
if (pres_2_entr_2_sort$pres_06[i] - pres_2_entr_2_sort$pres_07[i] == 1){temp1[i] = 2007}
# date de seconde sortie (première année non soumise)
temp2[i] = 2009
if (pres_2_entr_2_sort$pres_09[i] - pres_2_entr_2_sort$pres_10[i] == 1){temp2[i] = 2010}
if (pres_2_entr_2_sort$pres_10[i] - pres_2_entr_2_sort$pres_11[i] == 1){temp2[i] = 2011}
if (pres_2_entr_2_sort$pres_11[i] - pres_2_entr_2_sort$pres_12[i] == 1){temp2[i] = 2012}
if (pres_2_entr_2_sort$pres_12[i] - pres_2_entr_2_sort$pres_13[i] == 1){temp2[i] = 2013}
if (pres_2_entr_2_sort$pres_13[i] - pres_2_entr_2_sort$pres_14[i] == 1){temp2[i] = 2014}
if (pres_2_entr_2_sort$pres_14[i] - pres_2_entr_2_sort$pres_15[i] == 1){temp2[i] = 2015}
if (pres_2_entr_2_sort$pres_15[i] - pres_2_entr_2_sort$pres_16[i] == 1){temp2[i] = 2016}
if (pres_2_entr_2_sort$pres_16[i] - pres_2_entr_2_sort$pres_17[i] == 1){temp2[i] = 2017}
if (pres_2_entr_2_sort$pres_17[i] - pres_2_entr_2_sort$pres_18[i] == 1){temp2[i] = 2018}
if (pres_2_entr_2_sort$pres_18[i] - pres_2_entr_2_sort$pres_19[i] == 1){temp2[i] = 2019}
if (pres_2_entr_2_sort$pres_19[i] - pres_2_entr_2_sort$pres_20[i] == 1){temp2[i] = 2020}
if (pres_2_entr_2_sort$pres_20[i] - pres_2_entr_2_sort$pres_21[i] == 1){temp2[i] = 2021}
}
pres_2_entr_2_sort$sortie1 = temp1
pres_2_entr_2_sort$entree2 = temp
pres_2_entr_2_sort$sortie2 = temp2
par(mfrow = c(2,2))
barplot(table(pres_2_entr_2_sort$premiere_annee), col = 'plum', ylab = "effectif",
main = "Première entrée")
barplot(table(pres_2_entr_2_sort$entree2), col = 'plum', ylab = "effectif",
main = "Deuxième entrée")
barplot(table(pres_2_entr_2_sort$sortie1), col = 'plum', ylab = "effectif",
main = "Première sortie")
barplot(table(pres_2_entr_2_sort$sortie2), col = 'plum', ylab = "effectif",
main = "Deuxième sortie")
par(mfrow = c(1,1))
title("Dates d'entrées et de sorties des bilans annuels SRU", line = 3)
pres_2_entr_2_sort[,c(1,19:22)]
## code_commune premiere_annee sortie1 entree2 sortie2
## 3 01160 2014 2017 2019 2020
## 15 03023 2010 2011 2014 2017
## 72 10325 2016 2019 2020 2021
## 159 15012 2008 2015 2016 2018
## 160 15267 2010 2015 2016 2018
## 242 27602 2006 2013 2014 2015
## 251 29061 2006 2011 2016 2018
## 252 29069 2008 2012 2016 2018
## 253 29075 2006 2011 2016 2018
## 256 29189 2006 2011 2016 2018
## 259 29212 2006 2011 2016 2018
## 262 29235 2006 2011 2016 2018
## 336 31555 2006 2013 2014 2018
## 349 33096 2006 2008 2014 2016
## 442 35179 2013 2016 2017 2018
## 444 35206 2008 2012 2013 2014
## 460 37050 2006 2018 2020 2021
## 466 37163 2013 2018 2020 2021
## 520 42223 2006 2007 2016 2017
## 528 42302 2006 2007 2016 2017
## 532 42330 2006 2007 2016 2017
## 574 44210 2007 2008 2012 2015
## 626 51242 2006 2009 2016 2018
## 641 54430 2008 2010 2015 2016
## 643 54495 2006 2010 2017 2018
## 646 54578 2006 2010 2017 2018
## 671 57032 2006 2008 2010 2011
## 673 57143 2006 2013 2016 2021
## 674 57306 2011 2013 2015 2019
## 686 57757 2006 2010 2011 2019
## 687 58121 2008 2009 2011 2012
## 708 59279 2006 2008 2014 2018
## 727 59428 2008 2014 2015 2021
## 757 61397 2008 2013 2016 2018
## 764 62139 2006 2011 2012 2014
## 779 62757 2006 2011 2012 2014
## 781 62774 2006 2008 2009 2010
## 785 62893 2008 2011 2012 2013
## 795 63164 2006 2012 2013 2015
## 811 64237 2006 2015 2018 2020
## 893 68376 2006 2011 2012 2013
## 946 71059 2008 2010 2012 2018
## 949 71221 2008 2014 2016 2018
## 950 71445 2006 2011 2013 2014
## 952 71486 2008 2010 2012 2018
## 953 72008 2006 2013 2016 2018
## 956 72213 2008 2014 2016 2018
## 957 72328 2010 2013 2016 2018
## 958 72386 2006 2013 2016 2018
## 1023 77085 2006 2014 2018 2021
## 1025 77111 2006 2007 2008 2021
## 1042 77276 2008 2009 2010 2018
## 1061 77447 2008 2009 2010 2019
## 1079 78118 2006 2013 2014 2020
## 1119 78423 2014 2015 2016 2017
## 1157 81120 2009 2014 2017 2018
## 1159 81163 2008 2014 2017 2018
## 1259 89263 2008 2015 2016 2020
## 1262 90032 2013 2014 2016 2018
## 1283 91272 2006 2015 2017 2019
## 1286 91326 2006 2010 2014 2018
## 1303 91477 2006 2007 2014 2015
## 1311 91570 2006 2015 2017 2020
## 1345 92071 2006 2013 2014 2021
## 1358 93064 2006 2013 2015 2018
## 1434 97111 2012 2014 2016 2018
## 1441 97121 2012 2014 2016 2018
## 1445 97129 2012 2014 2016 2018
## 1458 97217 2014 2015 2016 2018
## 1464 97225 2008 2011 2012 2013
## 1483 97402 2008 2009 2010 2011
a = sqldf("SELECT premiere_annee, sortie1, entree2, sortie2, count(code_commune)
FROM pres_2_entr_2_sort
GROUP BY premiere_annee, sortie1, entree2, sortie2")
print(a)
## premiere_annee sortie1 entree2 sortie2 count(code_commune)
## 1 2006 2007 2008 2021 1
## 2 2006 2007 2014 2015 1
## 3 2006 2007 2016 2017 3
## 4 2006 2008 2009 2010 1
## 5 2006 2008 2010 2011 1
## 6 2006 2008 2014 2016 1
## 7 2006 2008 2014 2018 1
## 8 2006 2009 2016 2018 1
## 9 2006 2010 2011 2019 1
## 10 2006 2010 2014 2018 1
## 11 2006 2010 2017 2018 2
## 12 2006 2011 2012 2013 1
## 13 2006 2011 2012 2014 2
## 14 2006 2011 2013 2014 1
## 15 2006 2011 2016 2018 5
## 16 2006 2012 2013 2015 1
## 17 2006 2013 2014 2015 1
## 18 2006 2013 2014 2018 1
## 19 2006 2013 2014 2020 1
## 20 2006 2013 2014 2021 1
## 21 2006 2013 2015 2018 1
## 22 2006 2013 2016 2018 2
## 23 2006 2013 2016 2021 1
## 24 2006 2014 2018 2021 1
## 25 2006 2015 2017 2019 1
## 26 2006 2015 2017 2020 1
## 27 2006 2015 2018 2020 1
## 28 2006 2018 2020 2021 1
## 29 2007 2008 2012 2015 1
## 30 2008 2009 2010 2011 1
## 31 2008 2009 2010 2018 1
## 32 2008 2009 2010 2019 1
## 33 2008 2009 2011 2012 1
## 34 2008 2010 2012 2018 2
## 35 2008 2010 2015 2016 1
## 36 2008 2011 2012 2013 2
## 37 2008 2012 2013 2014 1
## 38 2008 2012 2016 2018 1
## 39 2008 2013 2016 2018 1
## 40 2008 2014 2015 2021 1
## 41 2008 2014 2016 2018 2
## 42 2008 2014 2017 2018 1
## 43 2008 2015 2016 2018 1
## 44 2008 2015 2016 2020 1
## 45 2009 2014 2017 2018 1
## 46 2010 2011 2014 2017 1
## 47 2010 2013 2016 2018 1
## 48 2010 2015 2016 2018 1
## 49 2011 2013 2015 2019 1
## 50 2012 2014 2016 2018 3
## 51 2013 2014 2016 2018 1
## 52 2013 2016 2017 2018 1
## 53 2013 2018 2020 2021 1
## 54 2014 2015 2016 2017 1
## 55 2014 2015 2016 2018 1
## 56 2014 2017 2019 2020 1
## 57 2016 2019 2020 2021 1
# les communes qui sortent des bilans triennaux entre celui de 2005-2007 et celui de 2008-2010
com_sort_07_08_tri = sqldf("SELECT code_commune FROM co_so_05_07
EXCEPT
SELECT code_commune FROM co_so_08_10")
# 30 communes
# les communes qui sortent des bilans triennaux entre celui de 2008-2010 et celui de 2011-2013
com_sort_10_11_tri = sqldf("SELECT code_commune FROM co_so_08_10
EXCEPT
SELECT code_commune FROM co_so_11_13")
# 85 communes
# les communes qui sortent des bilans triennaux entre celui de 2011-2013 et celui de 2014-2016
com_sort_13_14_tri = sqldf("SELECT code_commune FROM co_so_11_13
EXCEPT
SELECT code_commune FROM co_so_14_16")
# 191 communes
# les communes qui sortent des bilans triennaux entre celui de 2014-2016 et celui de 2017-2019
com_sort_16_17_tri = sqldf("SELECT code_commune FROM co_so_14_16
EXCEPT
SELECT code_commune FROM co_so_17_19")
# 0 commune
# les communes qui entrent des bilans triennaux entre celui de 2005-2007 et celui de 2008-2010
com_entr_07_08_tri = sqldf("SELECT code_commune FROM co_so_08_10
EXCEPT
SELECT code_commune FROM co_so_05_07")
# 277 communes
# les communes qui entrent des bilans triennaux entre celui de 2008-2010 et celui de 2011-2013
com_entr_10_11_tri = sqldf("SELECT code_commune FROM co_so_11_13
EXCEPT
SELECT code_commune FROM co_so_08_10")
# 129 communes
# les communes qui entrent des bilans triennaux entre celui de 2011-2013 et celui de 2014-2016
com_entr_13_14_tri = sqldf("SELECT code_commune FROM co_so_14_16
EXCEPT
SELECT code_commune FROM co_so_11_13")
# 171 communes
# les communes qui entrent des bilans triennaux entre celui de 2014-2016 et celui de 2017-2019
com_entr_16_17_tri = sqldf("SELECT code_commune FROM co_so_17_19
EXCEPT
SELECT code_commune FROM co_so_14_16")
# 33 communes
entrees_sorties_triennal = c()
entrees_sorties_triennal$entree_05 = co_so_tri$code_commune %in% co_so_05_07$code_commune
entrees_sorties_triennal$entree_08 = co_so_tri$code_commune %in% com_entr_07_08_tri$code_commune
entrees_sorties_triennal$entree_11 = co_so_tri$code_commune %in% com_entr_10_11_tri$code_commune
entrees_sorties_triennal$entree_14 = co_so_tri$code_commune %in% com_entr_13_14_tri$code_commune
entrees_sorties_triennal$entree_17 = co_so_tri$code_commune %in% com_entr_16_17_tri$code_commune
entrees_sorties_triennal$sorties_07 = co_so_tri$code_commune %in% com_sort_07_08_tri$code_commune
entrees_sorties_triennal$sorties_10 = co_so_tri$code_commune %in% com_sort_07_08_tri$code_commune
entrees_sorties_triennal$sorties_13 = co_so_tri$code_commune %in% com_sort_07_08_tri$code_commune
entrees_sorties_triennal$sorties_16 = co_so_tri$code_commune %in% com_sort_07_08_tri$code_commune
entrees_sorties_triennal = as.data.frame(entrees_sorties_triennal)
presence_triennal = c()
presence_triennal$pres_02_04 = co_so_tri$code_commune %in% co_so_02_04$code_commune
presence_triennal$pres_05_07 = co_so_tri$code_commune %in% co_so_05_07$code_commune
presence_triennal$pres_08_10 = co_so_tri$code_commune %in% co_so_08_10$code_commune
presence_triennal$pres_11_13 = co_so_tri$code_commune %in% co_so_11_13$code_commune
presence_triennal$pres_14_16 = co_so_tri$code_commune %in% co_so_14_16$code_commune
presence_triennal$pres_17_19 = co_so_tri$code_commune %in% co_so_17_19$code_commune
presence_triennal$nb_triennaux = presence_triennal$pres_05_07 +
presence_triennal$pres_08_10 + presence_triennal$pres_11_13 +
presence_triennal$pres_14_16 + presence_triennal$pres_17_19
for (i in 1:length(co_so_tri$code_commune)){
presence_triennal$premier_triennal[i] = '2017-2019'
if (presence_triennal$pres_02_04[i]){presence_triennal$premier_triennal[i] = '2002-2004'}
if (presence_triennal$pres_14_16[i]){presence_triennal$premier_triennal[i] = '2014-2016'}
if (presence_triennal$pres_11_13[i]){presence_triennal$premier_triennal[i] = '2011-2013'}
if (presence_triennal$pres_08_10[i]){presence_triennal$premier_triennal[i] = '2008-2010'}
if (presence_triennal$pres_05_07[i]){presence_triennal$premier_triennal[i] = '2005-2007'}
}
table(presence_triennal$premier_triennal, presence_triennal$nb_triennaux)
##
## 0 1 2 3 4 5
## 2002-2004 10 0 0 0 0 0
## 2005-2007 0 13 35 75 22 585
## 2008-2010 0 31 82 5 159 0
## 2011-2013 0 40 0 81 0 0
## 2014-2016 0 0 140 0 0 0
## 2017-2019 0 33 0 0 0 0